猿问

连接到 Go Gin 时的 Angular 8 CORS

我用 Golang 的Gin 框架和JWT 中间件为其构建了一个后端。这是自述文件中的官方示例,我使用了它:

主程序

package main


import (

    "log"

    "net/http"

    "os"

    "time"


    "github.com/appleboy/gin-jwt/v2"

    "github.com/gin-gonic/gin"

)


type login struct {

    Username string `form:"username" json:"username" binding:"required"`

    Password string `form:"password" json:"password" binding:"required"`

}


var identityKey = "id"


func helloHandler(c *gin.Context) {

    claims := jwt.ExtractClaims(c)

    user, _ := c.Get(identityKey)

    c.JSON(200, gin.H{

        "userID":   claims[identityKey],

        "userName": user.(*User).UserName,

        "text":     "Hello World.",

    })

}


// User demo

type User struct {

    UserName  string

    FirstName string

    LastName  string

}


func main() {

    port := os.Getenv("PORT")

    r := gin.New()

    r.Use(gin.Logger())

    r.Use(gin.Recovery())


    if port == "" {

        port = "8000"

    }


    // the jwt middleware

    authMiddleware, err := jwt.New(&jwt.GinJWTMiddleware{

        Realm:       "test zone",

        Key:         []byte("secret key"),

        Timeout:     time.Hour,

        MaxRefresh:  time.Hour,

        IdentityKey: identityKey,

        PayloadFunc: func(data interface{}) jwt.MapClaims {

            if v, ok := data.(*User); ok {

                return jwt.MapClaims{

                    identityKey: v.UserName,

                }

            }

            return jwt.MapClaims{}

        },

        IdentityHandler: func(c *gin.Context) interface{} {

            claims := jwt.ExtractClaims(c)

            return &User{

                UserName: claims[identityKey].(string),

            }

        },


凤凰求蛊
浏览 147回答 1
1回答

蛊毒传说

更改AllowHeaders: []string{"Origin"}为AllowHeaders: []string{"content-type"};
随时随地看视频慕课网APP

相关分类

Go
我要回答