1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package Config
- import (
- "github.com/dgrijalva/jwt-go"
- "time"
- )
- var (
- // SecretKey 假设这是你的签名密钥
- SecretKey = []byte("your-secret-key")
- )
- // CreateToken 创建Token
- func CreateToken(userID int) (string, error) {
- token := jwt.New(jwt.SigningMethodHS256)
- claims := token.Claims.(jwt.MapClaims)
- claims["user_id"] = userID
- claims["exp"] = time.Now().Add(time.Hour * 1).Unix() // Token有效期1小时
- return token.SignedString(SecretKey)
- }
- // ParseToken 解析Token
- func ParseToken(tokenString string) (*jwt.Token, error) {
- return jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
- // Don't forget to validate the alg is what you expect:
- if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
- return nil, nil
- }
- return SecretKey, nil
- })
- }
- //func main() {
- // router := gin.Default()
- // // 登录接口,生成Token
- // router.GET("/login", func(c *gin.Context) {
- // // 假设用户ID是1
- // userID := 1
- // token, err := CreateToken(userID)
- // if err != nil {
- // c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
- // return
- // }
- // c.JSON(http.StatusOK, gin.H{"token": token})
- // })
- //
- // // 需要Token验证的接口
- // router.GET("/protected", func(c *gin.Context) {
- // token := c.Request.Header.Get("authorization") // 从HTTP头部获取Token
- // if token == "" {
- // c.JSON(http.StatusUnauthorized, gin.H{"error": "No token provided"})
- // return
- // }
- //
- // // 解析Token
- // _, err := ParseToken(token)
- // if err != nil {
- // c.JSON(http.StatusUnauthorized, gin.H{"error": "Invalid token"})
- // return
- // }
- //
- // // Token有效,继续业务逻辑
- // c.JSON(http.StatusOK, gin.H{"message": "Authorized"})
- // })
- //
- // router.Run(":8080")
- //}
|