token_util.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package client
  2. import (
  3. "github.com/druidcaesa/gotool"
  4. "strings"
  5. "ulink-admin/config"
  6. "ulink-admin/frame"
  7. "ulink-admin/modules/system/models/model"
  8. "ulink-admin/pkg/base"
  9. "ulink-admin/pkg/cache"
  10. )
  11. type UserUtils struct {
  12. }
  13. // GetUserInfo 通过jwt获取当前登录用户
  14. func GetUserInfo(c *frame.Context) *model.SysMember {
  15. token := c.Request.Header.Get("Authorization")
  16. if token == "" {
  17. return nil
  18. }
  19. s := strings.Split(token, " ")
  20. if len(s) != 2 {
  21. return nil
  22. }
  23. // 解析token包含的信息
  24. claims := getJWTCustomClaims(s[1])
  25. if claims == nil {
  26. return nil
  27. }
  28. info := claims.UserInfo
  29. return info
  30. }
  31. func GetJWTRedisKey(c *frame.Context) string {
  32. token := c.Request.Header.Get("Authorization")
  33. s := strings.Split(token, " ")
  34. // 解析token包含的信息
  35. claims := getJWTCustomClaims(s[1])
  36. if claims == nil {
  37. return ""
  38. }
  39. return claims.RedisKey
  40. }
  41. func GetToken(key string) (string, error) {
  42. switch config.GetJwtConfig().Cache {
  43. case "db":
  44. case "memory":
  45. tokenInfo := cache.GetToken(key)
  46. if tokenInfo != nil {
  47. return tokenInfo.Token, nil
  48. }
  49. case "redis":
  50. return base.RedisDB.GET(key)
  51. }
  52. return "", nil
  53. }
  54. // SaveRedisToken 将token存入到redis
  55. func SaveRedisToken(token string) {
  56. server := config.GetServerCfg()
  57. if server.Lock == "1" {
  58. claims := getJWTCustomClaims(token)
  59. switch config.GetJwtConfig().Cache {
  60. case "db":
  61. case "memory":
  62. cache.SaveToken(claims.RedisKey, claims.RedisTimeOut, token)
  63. case "redis":
  64. _, err := base.RedisDB.SETEX(claims.RedisKey, claims.RedisTimeOut, token)
  65. if err != nil {
  66. println(err.Error())
  67. }
  68. }
  69. }
  70. }
  71. func getJWTCustomClaims(token string) *CustomClaims {
  72. j := NewJWT()
  73. // parseToken 解析token包含的信息
  74. claims, err := j.ParseToken(token)
  75. if err != nil {
  76. gotool.Logs.ErrorLog().Println(err)
  77. return nil
  78. }
  79. return claims
  80. }
  81. // CheckIsAdmin 判断是否是超级管理员
  82. func CheckIsAdmin(user *model.SysUser) bool {
  83. if user.Id == 1 {
  84. return true
  85. } else {
  86. return false
  87. }
  88. }