Skip to content

Commit dc0723e

Browse files
committed
enh(jakarta-ee): add optional URL session tracking configuration parameters
1 parent e9b448a commit dc0723e

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

support/jakarta-ee/src/main/java/org/apache/shiro/ee/listeners/EnvironmentLoaderListener.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@
1919
import javax.servlet.ServletContextEvent;
2020
import javax.servlet.ServletContextListener;
2121

22-
import static javax.servlet.SessionTrackingMode.COOKIE;
23-
22+
import javax.servlet.SessionTrackingMode;
2423
import javax.servlet.annotation.WebListener;
2524

2625
import org.apache.shiro.web.env.EnvironmentLoader;
@@ -34,6 +33,9 @@
3433
public class EnvironmentLoaderListener extends EnvironmentLoader implements ServletContextListener {
3534
private static final String SHIRO_EE_DISABLED_PARAM = "org.apache.shiro.ee.disabled";
3635
private static final String SHIRO_EE_REDIRECT_DISABLED_PARAM = "org.apache.shiro.ee.redirect.disabled";
36+
private static final String SHIRO_EE_ENABLE_URL_SESSION_TRACKING_PARAM = "org.apache.shiro.ee.enable-url-session-tracking";
37+
private static final String SHIRO_EE_SESSION_TRACKING_CONFIGURATION_DISABLED_PARAM =
38+
"org.apache.shiro.ee.session-tracking-configuration.disabled";
3739
private static final String FORM_RESUBMIT_DISABLED_PARAM = "org.apache.shiro.form-resubmit.disabled";
3840
private static final String FORM_RESUBMIT_SECURE_COOKIES = "org.apache.shiro.form-resubmit.secure-cookies";
3941
private static final String SHIRO_WEB_DISABLE_PRINCIPAL_PARAM = "org.apache.shiro.web.disable-principal";
@@ -80,7 +82,18 @@ public void contextInitialized(ServletContextEvent sce) {
8082
sce.getServletContext().setAttribute(SHIRO_WEB_DISABLE_PRINCIPAL_PARAM, Boolean.TRUE);
8183
}
8284
if (!isShiroEEDisabled(sce.getServletContext())) {
83-
sce.getServletContext().setSessionTrackingModes(Set.of(COOKIE));
85+
if (!Boolean.parseBoolean(sce.getServletContext()
86+
.getInitParameter(SHIRO_EE_SESSION_TRACKING_CONFIGURATION_DISABLED_PARAM))) {
87+
Set<SessionTrackingMode> effectiveModes = sce.getServletContext().getEffectiveSessionTrackingModes();
88+
if(Boolean.parseBoolean(sce.getServletContext()
89+
.getInitParameter(SHIRO_EE_ENABLE_URL_SESSION_TRACKING_PARAM))) {
90+
effectiveModes.add(SessionTrackingMode.URL);
91+
} else {
92+
effectiveModes.remove(SessionTrackingMode.URL);
93+
}
94+
sce.getServletContext().setSessionTrackingModes(effectiveModes);
95+
}
96+
8497
initEnvironment(sce.getServletContext());
8598
}
8699
}

0 commit comments

Comments
 (0)