gpt4 book ai didi

java - 在 Spring MVC 中设置 session 超时

转载 作者:IT老高 更新时间:2023-10-28 13:51:29 26 4
gpt4 key购买 nike

有没有办法在 Spring 中指定 session 超时? 我无法在 web.xml 中指定它。因为我在 Controller 中使用 session 范围 bean,如下所示

我已经通过 spring xml 文件配置了 Controller 。

class xyzController{

ABCSessionScopeClass objectWhichWillBeStoredInSession;
}

我也不能用这个

session.setMaxInactiveInterval(60*60);

有没有其他方法可以做到这一点。我不介意为每个 session 或同时为所有 session 设置超时。

最佳答案

使用Pure Spring MVC,sevlet context.xml的解决方案

<mvc:interceptors>
<bean class="com.xxx.SessionHandler" />
</mvc:interceptors>

处理程序适配器

@Component
public class SessionHandler extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
request.getSession().setMaxInactiveInterval(60*60);
return true;
}
}

假设你使用的是spring security,

对于每次成功登录,我认为最好的方法是创建 LoginSuccessHandler 并指定 authentication-success-handler 用于正常登录以及记住我。

@Service
public class LoginSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler {
@Override
public void onAuthenticationSuccess(
HttpServletRequest request,
HttpServletResponse response,
Authentication authentication) throws ServletException, IOException {
request.getSession().setMaxInactiveInterval(60*60);
super.onAuthenticationSuccess(request, response, authentication);
}

}

 

<http auto-config="true" use-expressions="true">
<form-login login-page="/login"
authentication-failure-url="/login.hst?error=true"
**authentication-success-handler-ref="loginSucessHandler"** />
<logout invalidate-session="true" logout-success-url="/home" logout-url="/logout" />
<remember-me key="jbcp" **authentication-success-handler-ref="loginSucessHandler"**/>
<session-management>
<concurrency-control max-sessions="1" />
</session-management>
</http>

关于java - 在 Spring MVC 中设置 session 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12082677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com