From 165b3cfcd8e604e70192865b9dcb3a12f3306e3b Mon Sep 17 00:00:00 2001 From: lyfO_o <764716047@qq.com> Date: 星期五, 01 七月 2022 14:34:07 +0800 Subject: [PATCH] 调整 --- safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/exception/GlobalExceptionHandler.java | 28 ++++++++++++++++++++++++++++ safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/security/TokenAuthenticationFilter.java | 13 ++++++------- safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/security/WebSecurityConfig.java | 2 -- 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/exception/GlobalExceptionHandler.java b/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/exception/GlobalExceptionHandler.java index a8493d2..75b7c2f 100644 --- a/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/exception/GlobalExceptionHandler.java +++ b/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/exception/GlobalExceptionHandler.java @@ -7,6 +7,8 @@ import com.gkhy.safePlatform.commons.vo.ResultVO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.security.core.AuthenticationException; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; @@ -38,6 +40,32 @@ return new ResultVO(e.getError()); } + + /** + * @Description: AuthenticationException + */ + + @ResponseBody + @ExceptionHandler(value = AuthenticationException.class) + public ResultVO CHandler(AuthenticationException e) { + logger.warn(e.getMessage()); + return new ResultVO(ResultCodes.CLIENT_PERMISSION_NOT_ALLOW); + } + + + /** + * @Description: AuthenticationException + */ + + @ResponseBody + @ExceptionHandler(value = AccessDeniedException.class) + public ResultVO DHandler(AccessDeniedException e) { + logger.warn(e.getMessage()); + return new ResultVO(ResultCodes.CLIENT_PERMISSION_NOT_ALLOW); + + } + + /** * 系统错误异常 */ diff --git a/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/security/TokenAuthenticationFilter.java b/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/security/TokenAuthenticationFilter.java index 874b46f..a6ba791 100644 --- a/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/security/TokenAuthenticationFilter.java +++ b/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/security/TokenAuthenticationFilter.java @@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.gkhy.safePlatform.account.rpc.apimodel.UserAccountService; +import com.gkhy.safePlatform.commons.co.CacheAuthority; import com.gkhy.safePlatform.commons.co.CacheUser; import com.gkhy.safePlatform.commons.enums.RedisKeyEnum; import com.gkhy.safePlatform.commons.enums.ResultCodes; @@ -54,11 +55,7 @@ } catch (BusinessException e) { // 返回异常 this.writeJSON(req, resp, new ResultVO<>(e.getError())); - } catch (Exception e) { - e.printStackTrace(); - this.writeJSON(req, resp, new ResultVO<>(ResultCodes.SERVER_ERROR)); } - } @@ -93,13 +90,15 @@ // 3.redis获取权限 String authoritiesKey = RedisKeyEnum.authKey(RedisKeyEnum.AUTH_AUTHORITIES, userId); String oo = userAccountService.getValueByKeyFromRedis(authoritiesKey); - List<GrantedAuthority> authorities; + List<GrantedAuthority> authorities = new ArrayList<>(); // 4.redis中是否存在 if (oo != null) { // 5.存在 - authorities = JSONArray.parseArray(oo, GrantedAuthority.class); + List<CacheAuthority> cacheAuthorities = JSONArray.parseArray(oo, CacheAuthority.class); + for (CacheAuthority cacheAuthority: cacheAuthorities) { + authorities.add(new SimpleGrantedAuthority(cacheAuthority.getAuthority())); + } }else { - authorities = new ArrayList<>(); // 6.不存在=>数据库查询 String roleCode = userAccountService.getUserRoleCodeByUserId(userId); // role diff --git a/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/security/WebSecurityConfig.java b/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/security/WebSecurityConfig.java index 3c6ef70..7bd4a36 100644 --- a/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/security/WebSecurityConfig.java +++ b/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/security/WebSecurityConfig.java @@ -50,8 +50,6 @@ http.headers().cacheControl(); // jwt过滤器 http.addFilterBefore(tokenAuthenticationFilter, UsernamePasswordAuthenticationFilter.class); - // 没有登录,没有权限 => 自定义返回 - http.exceptionHandling().authenticationEntryPoint(authenticationEntryPoint).accessDeniedHandler(accessDeniedHandler); // 请求认证访问 http.authorizeRequests().anyRequest().authenticated(); // 允许跨域访问 -- Gitblit v1.9.2