From a2a91ec5aed426a8732215f83c4628aaf6cd1141 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期三, 26 十月 2022 16:00:47 +0800 Subject: [PATCH] 1 --- src/main/java/com/lf/server/interceptor/AuthInterceptor.java | 67 ++++++++++++++++++++------------- 1 files changed, 40 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/lf/server/interceptor/AuthInterceptor.java b/src/main/java/com/lf/server/interceptor/AuthInterceptor.java index 4e03e05..4389d7c 100644 --- a/src/main/java/com/lf/server/interceptor/AuthInterceptor.java +++ b/src/main/java/com/lf/server/interceptor/AuthInterceptor.java @@ -1,10 +1,8 @@ package com.lf.server.interceptor; import com.alibaba.fastjson.JSON; -import com.lf.server.entity.all.HttpStatus; -import com.lf.server.entity.all.ResponseMsg; -import com.lf.server.entity.all.StaticData; -import com.lf.server.entity.sys.UsersEntity; +import com.lf.server.entity.all.*; +import com.lf.server.entity.sys.UserEntity; import com.lf.server.helper.StringHelper; import com.lf.server.helper.WebHelper; import com.lf.server.service.sys.TokenService; @@ -16,6 +14,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.util.List; /** * 韬唤璁よ瘉鎷︽埅鍣� @@ -31,6 +30,9 @@ private static final String NO_LOGIN = JSON.toJSONString(new ResponseMsg<String>(HttpStatus.NO_LOGIN_ERROR, "鐢ㄦ埛鏈櫥褰�")); + private static final String USER_LOCK = JSON.toJSONString(new ResponseMsg<String>(HttpStatus.USER_LOCK_ERROR, "鐢ㄦ埛ID宸茬鐢�")); + + private static final String NO_AUTH = JSON.toJSONString(new ResponseMsg<String>(HttpStatus.NO_AUTH_ERROR, "鏃犳潈闄愯闂�")); public AuthInterceptor(TokenService tokenService) { this.tokenService = tokenService; @@ -38,53 +40,45 @@ /** * Controller鎵ц涔嬪墠鎵ц锛屽鏋滆繑鍥炲�兼槸true鍒欎唬琛ㄦ斁琛岋紝杩斿洖false鍒欐嫤鎴� - * - * @param request - * @param response - * @param handler - * @return */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { + // noinspection AlibabaRemoveCommentedCode try { - System.out.println(request.getRequestURI().toLowerCase() + "," + (handler instanceof HandlerMethod)); - - // 闈炴柟娉曪紝鏃犻渶鎷︽埅 - if (!(handler instanceof HandlerMethod)) { - return true; - } - - // 鏃犻渶鎺堟潈 - if (noNeedAuth(request)) { + // 闈炴柟娉� 鎴� 鏃犻渶鎺堟潈锛屾棤闇�鎷︽埅 + if (!(handler instanceof HandlerMethod) || noNeedAuth(request)) { return true; } String token = WebHelper.getToken(request); if (StringHelper.isNull(token)) { - WebHelper.write2Page(response, NO_TOKEN); - return false; + return WebHelper.write2Page(response, NO_TOKEN); } - UsersEntity ue = tokenService.getCurrentUser(request); + UserEntity ue = tokenService.getCurrentUser(request); if (ue == null) { - WebHelper.write2Page(response, NO_LOGIN); - return false; + return WebHelper.write2Page(response, NO_LOGIN); + } + + if (tokenService.isUidDisable(ue)) { + return WebHelper.write2Page(response, USER_LOCK); } // 鏉冮檺鏍¢獙 + if (!checkPerms(ue, request)) { + System.out.println("鏃犳潈闄愯闂細" + request.getRequestURI().toLowerCase()); + return WebHelper.write2Page(response, NO_AUTH); + } return true; } catch (Exception ex) { - log.error(ex.getStackTrace()); + log.error(ex.getMessage(), ex); return false; } } /** * 鏃犻渶鎺堟潈 - * - * @param request - * @return */ private static boolean noNeedAuth(HttpServletRequest request) { String uri = request.getRequestURI().toLowerCase(); @@ -96,4 +90,23 @@ return false; } + + /** + * 妫�鏌ユ潈闄� + */ + private boolean checkPerms(UserEntity ue, HttpServletRequest request) { + List<String> list = tokenService.permsService.selectPerms(ue.getUid()); + if (list == null || list.size() == 0) { + return false; + } + + String url = request.getRequestURI(); + for (String perm : list) { + if (url.startsWith(perm)) { + return true; + } + } + + return false; + } } -- Gitblit v1.9.3