瀏覽代碼

sys_token

傅行帆 5 年之前
父節點
當前提交
076fcc06ba

+ 1
- 1
src/main/java/com/huiju/estateagents/center/sysUser/controller/SysUserController.java 查看文件

191
     
191
     
192
     @PostMapping("/center/signout")
192
     @PostMapping("/center/signout")
193
     public ResponseBean signout(HttpServletRequest request) {
193
     public ResponseBean signout(HttpServletRequest request) {
194
-        String token = request.getHeader("authorization");
194
+        String token = JWTUtils.getToken(request);
195
         QueryWrapper<SysToken> sysTokenQueryWrapper = new QueryWrapper<>();
195
         QueryWrapper<SysToken> sysTokenQueryWrapper = new QueryWrapper<>();
196
         sysTokenQueryWrapper.eq("token",token);
196
         sysTokenQueryWrapper.eq("token",token);
197
         sysTokenService.remove(sysTokenQueryWrapper);
197
         sysTokenService.remove(sysTokenQueryWrapper);

+ 2
- 0
src/main/java/com/huiju/estateagents/center/sysUser/entity/SysToken.java 查看文件

1
 package com.huiju.estateagents.center.sysUser.entity;
1
 package com.huiju.estateagents.center.sysUser.entity;
2
 
2
 
3
+import com.baomidou.mybatisplus.annotation.TableId;
3
 import lombok.Data;
4
 import lombok.Data;
4
 import lombok.EqualsAndHashCode;
5
 import lombok.EqualsAndHashCode;
5
 import lombok.experimental.Accessors;
6
 import lombok.experimental.Accessors;
25
     /**
26
     /**
26
      * token
27
      * token
27
      */
28
      */
29
+    @TableId(value = "token")
28
     private String token;
30
     private String token;
29
 
31
 
30
     /**
32
     /**

+ 20
- 0
src/main/java/com/huiju/estateagents/common/JWTUtils.java 查看文件

38
 
38
 
39
         return null;
39
         return null;
40
     }
40
     }
41
+    
42
+    /**
43
+     * getSubject 获取 jwt subject
44
+     * @param request
45
+     * @return
46
+     */
47
+    public static String getToken(HttpServletRequest request) {
48
+        String jwtHeader = request.getHeader("authorization");
49
+        if (null == jwtHeader || "".equals(jwtHeader.trim())) {
50
+            return null;
51
+        }
52
+        
53
+        String[] jwtAuths = jwtHeader.split("Bearer ");
54
+        if (null == jwtAuths || jwtAuths.length < 2) {
55
+            return null;
56
+        }
57
+        
58
+        
59
+        return jwtAuths[1];
60
+    }
41
 
61
 
42
     /**
62
     /**
43
      * newToken 生成新的 token
63
      * newToken 生成新的 token

+ 19
- 2
src/main/java/com/huiju/estateagents/interceptor/AccessInterceptor.java 查看文件

2
 
2
 
3
 import com.alibaba.fastjson.JSONObject;
3
 import com.alibaba.fastjson.JSONObject;
4
 import com.huiju.estateagents.base.ResponseBean;
4
 import com.huiju.estateagents.base.ResponseBean;
5
+import com.huiju.estateagents.center.sysUser.entity.SysToken;
6
+import com.huiju.estateagents.center.sysUser.service.ISysTokenService;
5
 import com.huiju.estateagents.common.JWTUtils;
7
 import com.huiju.estateagents.common.JWTUtils;
6
 import io.jsonwebtoken.*;
8
 import io.jsonwebtoken.*;
9
+import org.springframework.beans.factory.annotation.Autowired;
7
 import org.springframework.stereotype.Component;
10
 import org.springframework.stereotype.Component;
8
 import org.springframework.web.servlet.HandlerInterceptor;
11
 import org.springframework.web.servlet.HandlerInterceptor;
9
 import org.springframework.web.servlet.ModelAndView;
12
 import org.springframework.web.servlet.ModelAndView;
13
 
16
 
14
 @Component
17
 @Component
15
 public class AccessInterceptor implements HandlerInterceptor {
18
 public class AccessInterceptor implements HandlerInterceptor {
19
+    
20
+    @Autowired
21
+    private ISysTokenService sysTokenService;
22
+    
16
     private String[] whiteList = {
23
     private String[] whiteList = {
17
             "/wx/chat", // 聊天暂时不鉴权
24
             "/wx/chat", // 聊天暂时不鉴权
18
             "/api/wx/login",
25
             "/api/wx/login",
19
             "/api/admin/signin",
26
             "/api/admin/signin",
20
             "/api/taCheckin/activity",
27
             "/api/taCheckin/activity",
21
             "/api/wx/qrcode/scene",
28
             "/api/wx/qrcode/scene",
22
-		    "/center",
29
+		    "/center/signin",
23
     };
30
     };
24
 
31
 
25
     /*
32
     /*
92
             response.getOutputStream().write(JSONObject.toJSONBytes(resp));
99
             response.getOutputStream().write(JSONObject.toJSONBytes(resp));
93
             return false;
100
             return false;
94
         }
101
         }
95
-
102
+        
103
+        //添加如果执行了登出操作提示先进行登录
104
+        SysToken sysToken = sysTokenService.getById(jwtAuths[1]);
105
+        if (null == sysToken){
106
+            ResponseBean resp = ResponseBean.error("请先进行系统登录操作", ResponseBean.ERROR_AUTH_FAIL);
107
+    
108
+            response.addHeader("Content-type", "application/json");
109
+            response.getOutputStream().write(JSONObject.toJSONBytes(resp));
110
+            return false;
111
+        }
112
+        
96
         return true;
113
         return true;
97
     }
114
     }
98
 
115