|
|
@@ -16,16 +16,52 @@ var whiteList = []string{
|
|
|
|
|
|
func ApiMiddleware() gin.HandlerFunc {
|
|
|
return func(c *gin.Context) {
|
|
|
- // 检查当前路径是否在白名单中
|
|
|
- if isPathInWhiteList(c.Request.URL.Path) {
|
|
|
- c.Next()
|
|
|
- return
|
|
|
- }
|
|
|
// 从Header或Query中获取token
|
|
|
token := c.GetHeader("Authorization")
|
|
|
if token == "" {
|
|
|
token = c.Query("token")
|
|
|
}
|
|
|
+
|
|
|
+ // 定义member结构信息
|
|
|
+ var member *model.XMember
|
|
|
+ var err error
|
|
|
+ //获取redis
|
|
|
+ redisServer := server.GetRedisServerInstance()
|
|
|
+ // 检查当前路径是否在白名单中
|
|
|
+ if isPathInWhiteList(c.Request.URL.Path) {
|
|
|
+ if len(token) > 0 {
|
|
|
+ data := redisServer.GetStr(token)
|
|
|
+ if len(data) == 0 { //没用缓存信息
|
|
|
+ //根据token获取用户信息
|
|
|
+ memberModel := model.XMember{}
|
|
|
+ member, err = memberModel.GetMemberByToken(token)
|
|
|
+ if err != nil {
|
|
|
+ c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{
|
|
|
+ "code": 401,
|
|
|
+ "message": "认证信息已过期",
|
|
|
+ "data": nil,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if member.ID <= 0 {
|
|
|
+ c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{
|
|
|
+ "code": 401,
|
|
|
+ "message": "token失效",
|
|
|
+ "data": nil,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ //存入缓存
|
|
|
+ jsonData, _ := json.Marshal(member)
|
|
|
+ redisServer.SetStr(token, string(jsonData), 120)
|
|
|
+ } else {
|
|
|
+ _ = json.Unmarshal([]byte(data), &member)
|
|
|
+
|
|
|
+ }
|
|
|
+ c.Set("mId", member.ID)
|
|
|
+ }
|
|
|
+ c.Next()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
if token == "" {
|
|
|
c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{
|
|
|
"code": 404,
|
|
|
@@ -34,11 +70,6 @@ func ApiMiddleware() gin.HandlerFunc {
|
|
|
})
|
|
|
return
|
|
|
}
|
|
|
- // 1. 尝试从Redis缓存获取用户信息
|
|
|
- var member *model.XMember
|
|
|
- var err error
|
|
|
-
|
|
|
- redisServer := server.GetRedisServerInstance()
|
|
|
data := redisServer.GetStr(token)
|
|
|
if len(data) == 0 { //没用缓存信息
|
|
|
//根据token获取用户信息
|