config.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package Config
  2. import (
  3. "github.com/dgrijalva/jwt-go"
  4. "time"
  5. )
  6. var (
  7. // SecretKey 假设这是你的签名密钥
  8. SecretKey = []byte("your-secret-key")
  9. )
  10. // CreateToken 创建Token
  11. func CreateToken(userID int) (string, error) {
  12. token := jwt.New(jwt.SigningMethodHS256)
  13. claims := token.Claims.(jwt.MapClaims)
  14. claims["user_id"] = userID
  15. claims["exp"] = time.Now().Add(time.Hour * 1).Unix() // Token有效期1小时
  16. return token.SignedString(SecretKey)
  17. }
  18. // ParseToken 解析Token
  19. func ParseToken(tokenString string) (*jwt.Token, error) {
  20. return jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
  21. // Don't forget to validate the alg is what you expect:
  22. if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
  23. return nil, nil
  24. }
  25. return SecretKey, nil
  26. })
  27. }
  28. //func main() {
  29. // router := gin.Default()
  30. // // 登录接口,生成Token
  31. // router.GET("/login", func(c *gin.Context) {
  32. // // 假设用户ID是1
  33. // userID := 1
  34. // token, err := CreateToken(userID)
  35. // if err != nil {
  36. // c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
  37. // return
  38. // }
  39. // c.JSON(http.StatusOK, gin.H{"token": token})
  40. // })
  41. //
  42. // // 需要Token验证的接口
  43. // router.GET("/protected", func(c *gin.Context) {
  44. // token := c.Request.Header.Get("authorization") // 从HTTP头部获取Token
  45. // if token == "" {
  46. // c.JSON(http.StatusUnauthorized, gin.H{"error": "No token provided"})
  47. // return
  48. // }
  49. //
  50. // // 解析Token
  51. // _, err := ParseToken(token)
  52. // if err != nil {
  53. // c.JSON(http.StatusUnauthorized, gin.H{"error": "Invalid token"})
  54. // return
  55. // }
  56. //
  57. // // Token有效,继续业务逻辑
  58. // c.JSON(http.StatusOK, gin.H{"message": "Authorized"})
  59. // })
  60. //
  61. // router.Run(":8080")
  62. //}