Bladeren bron

sys_token

傅行帆 5 jaren geleden
bovenliggende
commit
076fcc06ba

+ 1
- 1
src/main/java/com/huiju/estateagents/center/sysUser/controller/SysUserController.java Bestand weergeven

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

+ 2
- 0
src/main/java/com/huiju/estateagents/center/sysUser/entity/SysToken.java Bestand weergeven

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

+ 20
- 0
src/main/java/com/huiju/estateagents/common/JWTUtils.java Bestand weergeven

@@ -38,6 +38,26 @@ public class JWTUtils {
38 38
 
39 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 63
      * newToken 生成新的 token

+ 19
- 2
src/main/java/com/huiju/estateagents/interceptor/AccessInterceptor.java Bestand weergeven

@@ -2,8 +2,11 @@ package com.huiju.estateagents.interceptor;
2 2
 
3 3
 import com.alibaba.fastjson.JSONObject;
4 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 7
 import com.huiju.estateagents.common.JWTUtils;
6 8
 import io.jsonwebtoken.*;
9
+import org.springframework.beans.factory.annotation.Autowired;
7 10
 import org.springframework.stereotype.Component;
8 11
 import org.springframework.web.servlet.HandlerInterceptor;
9 12
 import org.springframework.web.servlet.ModelAndView;
@@ -13,13 +16,17 @@ import javax.servlet.http.HttpServletResponse;
13 16
 
14 17
 @Component
15 18
 public class AccessInterceptor implements HandlerInterceptor {
19
+    
20
+    @Autowired
21
+    private ISysTokenService sysTokenService;
22
+    
16 23
     private String[] whiteList = {
17 24
             "/wx/chat", // 聊天暂时不鉴权
18 25
             "/api/wx/login",
19 26
             "/api/admin/signin",
20 27
             "/api/taCheckin/activity",
21 28
             "/api/wx/qrcode/scene",
22
-		    "/center",
29
+		    "/center/signin",
23 30
     };
24 31
 
25 32
     /*
@@ -92,7 +99,17 @@ public class AccessInterceptor implements HandlerInterceptor {
92 99
             response.getOutputStream().write(JSONObject.toJSONBytes(resp));
93 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 113
         return true;
97 114
     }
98 115