From 7e011672a135fd76686e7330baebc90f03ac6678 Mon Sep 17 00:00:00 2001 From: xiang Date: Fri, 5 Sep 2025 23:39:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E4=BF=AE=E6=94=B9server=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/AuthorizationServerConfig.java | 2 -- .../config/CustomAccessDeniedHandler.java | 32 +++++++++++++++++++ .../CustomAuthenticationEntryPoint.java | 30 +++++++++++++++++ 3 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 xs-service/src/main/java/com/xiang/xservice/auth/service/config/CustomAccessDeniedHandler.java create mode 100644 xs-service/src/main/java/com/xiang/xservice/auth/service/config/CustomAuthenticationEntryPoint.java diff --git a/xs-service/src/main/java/com/xiang/xservice/auth/service/config/AuthorizationServerConfig.java b/xs-service/src/main/java/com/xiang/xservice/auth/service/config/AuthorizationServerConfig.java index 7f59356..03ceed9 100644 --- a/xs-service/src/main/java/com/xiang/xservice/auth/service/config/AuthorizationServerConfig.java +++ b/xs-service/src/main/java/com/xiang/xservice/auth/service/config/AuthorizationServerConfig.java @@ -4,8 +4,6 @@ import com.nimbusds.jose.jwk.JWKSet; import com.nimbusds.jose.jwk.RSAKey; import com.nimbusds.jose.jwk.source.JWKSource; import com.nimbusds.jose.proc.SecurityContext; -import com.xiang.xservice.basic.exception.CustomAccessDeniedHandler; -import com.xiang.xservice.basic.exception.CustomAuthenticationEntryPoint; import com.xiang.xservice.basic.utils.JwkUtils; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; diff --git a/xs-service/src/main/java/com/xiang/xservice/auth/service/config/CustomAccessDeniedHandler.java b/xs-service/src/main/java/com/xiang/xservice/auth/service/config/CustomAccessDeniedHandler.java new file mode 100644 index 0000000..3ad17de --- /dev/null +++ b/xs-service/src/main/java/com/xiang/xservice/auth/service/config/CustomAccessDeniedHandler.java @@ -0,0 +1,32 @@ +package com.xiang.xservice.auth.service.config; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.xiang.xservice.basic.common.resp.Result; +import com.xiang.xservice.basic.exception.code.ErrorCode; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.security.web.access.AccessDeniedHandler; +import org.springframework.stereotype.Component; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * 用户403鉴权失败异常捕获 + */ +@Slf4j +@Component +public class CustomAccessDeniedHandler implements AccessDeniedHandler { + @Override + public void handle(HttpServletRequest request, + HttpServletResponse response, + AccessDeniedException accessDeniedException) throws IOException, ServletException { + response.setContentType("application/json;charset=UTF-8"); + response.setStatus(HttpServletResponse.SC_FORBIDDEN); + log.error("======用户鉴权失败======"); + Result result = Result.error(ErrorCode.USER_DENIED_ACCESS); + response.getWriter().write(new ObjectMapper().writeValueAsString(result)); + } +} diff --git a/xs-service/src/main/java/com/xiang/xservice/auth/service/config/CustomAuthenticationEntryPoint.java b/xs-service/src/main/java/com/xiang/xservice/auth/service/config/CustomAuthenticationEntryPoint.java new file mode 100644 index 0000000..1914a72 --- /dev/null +++ b/xs-service/src/main/java/com/xiang/xservice/auth/service/config/CustomAuthenticationEntryPoint.java @@ -0,0 +1,30 @@ +package com.xiang.xservice.auth.service.config; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.xiang.xservice.basic.common.resp.Result; +import com.xiang.xservice.basic.exception.code.ErrorCode; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.stereotype.Component; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * 用户未鉴权异常处理器 + */ +@Slf4j +@Component +public class CustomAuthenticationEntryPoint implements AuthenticationEntryPoint { + @Override + public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException { + response.setContentType("application/json;charset=UTF-8"); + response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + log.error("========用户未进行验证鉴权=========="); + Result result = Result.error(ErrorCode.NOT_AUTHORIZATION); + response.getWriter().write(new ObjectMapper().writeValueAsString(result)); + } +}