jwt.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. /*
  2. * @Author: LinkLeong link@icewhale.com
  3. * @Date: 2021-09-30 18:18:14
  4. * @LastEditors: LinkLeong
  5. * @LastEditTime: 2022-06-24 10:02:46
  6. * @FilePath: /CasaOS/pkg/utils/jwt/jwt.go
  7. * @Description:
  8. * @Website: https://www.casaos.io
  9. * Copyright (c) 2022 by icewhale, All Rights Reserved.
  10. */
  11. package jwt
  12. import (
  13. "time"
  14. jwt "github.com/golang-jwt/jwt/v4"
  15. )
  16. // type Claims struct {
  17. // UserName string `json:"username"`
  18. // PassWord string `json:"password"`
  19. // Id int `json:"id"`
  20. // jwt.RegisteredClaims
  21. // }
  22. // var jwtSecret []byte
  23. // //创建token
  24. // func GenerateToken(username, password string, id int, issuer string, t time.Duration) (string, error) {
  25. // clims := Claims{
  26. // username,
  27. // password,
  28. // id,
  29. // jwt.RegisteredClaims{
  30. // ExpiresAt: jwt.NewNumericDate(time.Now().Add(t)),
  31. // IssuedAt: jwt.NewNumericDate(time.Now()),
  32. // NotBefore: jwt.NewNumericDate(time.Now()),
  33. // Issuer: issuer,
  34. // },
  35. // }
  36. // tokenClaims := jwt.NewWithClaims(jwt.SigningMethodHS256, clims)
  37. // token, err := tokenClaims.SignedString(jwtSecret)
  38. // return token, err
  39. // }
  40. // //解析token
  41. // func ParseToken(token string) (*Claims, error) {
  42. // tokenClaims, err := jwt.ParseWithClaims(token, &Claims{}, func(token *jwt.Token) (interface{}, error) {
  43. // return jwtSecret, nil
  44. // })
  45. // if tokenClaims != nil {
  46. // if clims, ok := tokenClaims.Claims.(*Claims); ok && tokenClaims.Valid {
  47. // return clims, nil
  48. // }
  49. // }
  50. // return nil, err
  51. // }
  52. //****************** soon to be removed ******************
  53. type Claims struct {
  54. UserName string `json:"username"`
  55. PassWord string `json:"password"`
  56. jwt.StandardClaims
  57. }
  58. var jwtSecret []byte
  59. //创建token
  60. func GenerateToken(username, password string) (string, error) {
  61. expireTime := time.Now().AddDate(999, 0, 0)
  62. clims := Claims{
  63. username,
  64. password,
  65. jwt.StandardClaims{
  66. ExpiresAt: expireTime.Unix(),
  67. Issuer: "gin-blog",
  68. },
  69. }
  70. tokenClaims := jwt.NewWithClaims(jwt.SigningMethodHS256, clims)
  71. token, err := tokenClaims.SignedString(jwtSecret)
  72. return token, err
  73. }
  74. //解析token
  75. func ParseToken(token string) (*Claims, error) {
  76. tokenClaims, err := jwt.ParseWithClaims(token, &Claims{}, func(token *jwt.Token) (interface{}, error) {
  77. return jwtSecret, nil
  78. })
  79. if tokenClaims != nil {
  80. if clims, ok := tokenClaims.Claims.(*Claims); ok && tokenClaims.Valid {
  81. return clims, nil
  82. }
  83. }
  84. return nil, err
  85. }