From 4ddfd502023662f6d25c4be416d88751e206d91a Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期二, 25 十月 2022 09:45:30 +0800 Subject: [PATCH] 1 --- src/main/java/com/lf/server/interceptor/AuthInterceptor.java | 83 +++++++++++++++++++++++------------------ 1 files changed, 47 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/lf/server/interceptor/AuthInterceptor.java b/src/main/java/com/lf/server/interceptor/AuthInterceptor.java index b283513..180f9bb 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,54 +40,44 @@ /** * Controller鎵ц涔嬪墠鎵ц锛屽鏋滆繑鍥炲�兼槸true鍒欎唬琛ㄦ斁琛岋紝杩斿洖false鍒欐嫤鎴� - * - * @param request - * @param response - * @param handler - * @return */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { - //noinspection AlibabaRemoveCommentedCode + // noinspection AlibabaRemoveCommentedCode try { - System.out.println(request.getRequestURI().toLowerCase() + "," + (handler instanceof HandlerMethod)); + // 闈炴柟娉� 鎴� 鏃犻渶鎺堟潈锛屾棤闇�鎷︽埅 + if (!(handler instanceof HandlerMethod) || noNeedAuth(request)) { + return true; + } -// // 闈炴柟娉曪紝鏃犻渶鎷︽埅 -// if (!(handler instanceof HandlerMethod)) { -// return true; -// } -// -// // 鏃犻渶鎺堟潈 -// if (noNeedAuth(request)) { -// return true; -// } -// -// String token = WebHelper.getToken(request); -// if (StringHelper.isNull(token)) { -// WebHelper.write2Page(response, NO_TOKEN); -// return false; -// } -// -// UsersEntity ue = tokenService.getCurrentUser(request); -// if (ue == null) { -// WebHelper.write2Page(response, NO_LOGIN); -// return false; -// } + String token = WebHelper.getToken(request); + if (StringHelper.isNull(token)) { + return WebHelper.write2Page(response, NO_TOKEN); + } + + UserEntity ue = tokenService.getCurrentUser(request); + if (ue == null) { + return WebHelper.write2Page(response, NO_LOGIN); + } + + if (tokenService.isUidDisable(ue)) { + return WebHelper.write2Page(response, USER_LOCK); + } // 鏉冮檺鏍¢獙 + //if (!checkPerms(ue, request)) { + // 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(); @@ -97,4 +89,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