package model import ( "errors" "github.com/dgrijalva/jwt-go" "github.com/gin-gonic/gin" "net/http" "rocommon/util" "time" ) func UserLogin(c *gin.Context) { userName := c.DefaultQuery("name", "") ///default "" pass := c.DefaultQuery("pass", "") if userName != "wtgame" || pass != "wtgame123" { c.JSON(http.StatusOK, "请输入正确的用户名和密码") return } claims := &jwt.StandardClaims{} claims.IssuedAt = util.GetTimeSeconds() claims.ExpiresAt = util.GetCurrentTimeNow().Add(time.Second * time.Duration(3600)).Unix() signedToken, err := getToken(claims) if err != nil { c.String(http.StatusNotFound, err.Error()) return } c.Writer.Header().Add("Authorization", signedToken) c.String(http.StatusOK, signedToken) } func getToken(claims *jwt.StandardClaims) (string, error) { token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) signedToken, err := token.SignedString([]byte("wtgame123")) if err != nil { return "", errors.New("token invalid") } return signedToken, nil } func VerifyAction(tokenStr string) (*jwt.StandardClaims, error) { token, err := jwt.ParseWithClaims(tokenStr, &jwt.StandardClaims{}, func(token *jwt.Token) (interface{}, error) { return []byte("wtgame123"), nil }) if err != nil { return nil, errors.New("verify error") } claims, ok := token.Claims.(*jwt.StandardClaims) if !ok { return nil, errors.New("verify relogin") } if err := token.Claims.Valid(); err != nil { return nil, errors.New("verify relogin") } return claims, nil }