From bcedc006e1aff370831fc5bcb5056e81bad84c42 Mon Sep 17 00:00:00 2001 From: thinkgem Date: Wed, 13 Mar 2024 13:34:24 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=93=8D=E5=BA=94=E5=A4=B4?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0x-token,=E9=80=9A=E8=BF=87=E8=AE=B0=E4=BD=8F?= =?UTF-8?q?=E6=88=91=E7=99=BB=E5=BD=95=E7=B3=BB=E7=BB=9F=E6=97=B6=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/shiro/filter/UserFilter.java | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/modules/core/src/main/java/com/jeesite/common/shiro/filter/UserFilter.java b/modules/core/src/main/java/com/jeesite/common/shiro/filter/UserFilter.java index 89cd2187..9fade083 100644 --- a/modules/core/src/main/java/com/jeesite/common/shiro/filter/UserFilter.java +++ b/modules/core/src/main/java/com/jeesite/common/shiro/filter/UserFilter.java @@ -4,8 +4,11 @@ */ package com.jeesite.common.shiro.filter; +import com.jeesite.common.config.Global; +import com.jeesite.common.lang.StringUtils; import jakarta.servlet.ServletRequest; import jakarta.servlet.ServletResponse; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; @@ -15,7 +18,22 @@ import java.io.IOException; * @version 2017-03-22 */ public class UserFilter extends org.apache.shiro.web.filter.authc.UserFilter { - + + private String sessionIdHeaderName; + + public UserFilter () { + this.setSessionIdHeaderName(Global.getProperty("session.sessionIdHeaderName", "x-token")); + } + + @Override + protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) { + String sessionId = (String)request.getAttribute(getSessionIdHeaderName()); + if (StringUtils.isNotBlank(sessionId)) { + ((HttpServletResponse)response).setHeader(getSessionIdHeaderName(), sessionId); + } + return super.isAccessAllowed(request, response, mappedValue); + } + @Override protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws IOException { return PermissionsFilter.redirectTo403Page(request, response); @@ -25,5 +43,12 @@ public class UserFilter extends org.apache.shiro.web.filter.authc.UserFilter { protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException { PermissionsFilter.redirectToDefaultPath(request, response); } - + + public String getSessionIdHeaderName() { + return sessionIdHeaderName; + } + + public void setSessionIdHeaderName(String sessionIdHeaderName) { + this.sessionIdHeaderName = sessionIdHeaderName; + } }