From 62fdbdb8371cb2572d6fb0ca02cd11bdf8ac8098 Mon Sep 17 00:00:00 2001
From: zrj <646384940@qq.com>
Date: Fri, 07 Jun 2024 18:08:49 +0800
Subject: [PATCH] 无权限异常处理
---
blade-auth/src/main/java/org/springblade/auth/handle/TokenFilterHandle.java | 60 ++++++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 44 insertions(+), 16 deletions(-)
diff --git a/blade-auth/src/main/java/org/springblade/auth/handle/TokenFilterHandle.java b/blade-auth/src/main/java/org/springblade/auth/handle/TokenFilterHandle.java
index 6190528..510982e 100644
--- a/blade-auth/src/main/java/org/springblade/auth/handle/TokenFilterHandle.java
+++ b/blade-auth/src/main/java/org/springblade/auth/handle/TokenFilterHandle.java
@@ -16,6 +16,8 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
/**
* token 校验过滤器
@@ -28,23 +30,49 @@
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
String auth = request.getHeader("Blade-Auth");
- if (!StringUtils.isBlank(auth)) {
- String token = JwtUtil.getToken(auth);
- Claims claims = JwtUtil.parseJWT(token);
- if (!StringUtils.isBlank(token) && null!=claims) {
- //判断 Token 状态
- String tenantId = String.valueOf(claims.get(TokenConstant.TENANT_ID));
- String userId = String.valueOf(claims.get(TokenConstant.USER_ID));
- String account = String.valueOf(claims.get(TokenConstant.ACCOUNT));
- String accessToken = JwtUtil.getAccessToken(tenantId, userId, token);
- if (token.equalsIgnoreCase(accessToken)) {
- UsernamePasswordAuthenticationToken authenticationToken
- = new UsernamePasswordAuthenticationToken(account, null);
- authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
- SecurityContextHolder.getContext().setAuthentication(authenticationToken);
- }
- }
+ if (StringUtils.isBlank(auth)) {
+ // 无授权处理
+ unAuthResponse(response);
+ return;
}
+
+ String token = JwtUtil.getToken(auth);
+ Claims claims = JwtUtil.parseJWT(token);
+ if (!StringUtils.isBlank(token) && null!=claims) {
+ //判断 Token 状态
+ String tenantId = String.valueOf(claims.get(TokenConstant.TENANT_ID));
+ String userId = String.valueOf(claims.get(TokenConstant.USER_ID));
+ String account = String.valueOf(claims.get(TokenConstant.ACCOUNT));
+ String accessToken = JwtUtil.getAccessToken(tenantId, userId, token);
+ if (token.equalsIgnoreCase(accessToken)) {
+ UsernamePasswordAuthenticationToken authenticationToken
+ = new UsernamePasswordAuthenticationToken(account, null);
+ authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
+ SecurityContextHolder.getContext().setAuthentication(authenticationToken);
+ }else {
+ // 无授权处理
+ unAuthResponse(response);
+ return;
+ }
+ }else {
+ // 无授权处理
+ unAuthResponse(response);
+ return;
+ }
+
filterChain.doFilter(request, response);
}
+
+ /**
+ * 无授权处理
+ * @param response
+ * @throws IOException
+ */
+ private void unAuthResponse(HttpServletResponse response) throws IOException {
+ response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
+ response.setContentType("application/json;charset=UTF-8");
+ PrintWriter writer = new PrintWriter(new OutputStreamWriter(response.getOutputStream(), "UTF-8"));
+ writer.write("{\"status\": 401,\n" + "\"error\": \"Unauthorized\"\n" + "}");
+ writer.flush();
+ }
}
--
Gitblit v1.9.3