我使用Spring Security在我使用Spring开发的Web平台中对用户进行身份验证。 我想通过登录页面上的重定向来管理会话超时错误,但我找不到任何有关默认超时的信息,所以我找到了
http.sessionManagement()
.maximumSessions(1).expiredUrl("/login.html")
.invalidSessionUrl("/login.html");
但我也读到了
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent event) {
System.out.println("==== Session is created ====");
event.getSession().setMaxInactiveInterval(5*60);
}
@Override
public void sessionDestroyed(HttpSessionEvent event) {
System.out.println("==== Session is destroyed ====");
}
}
所以,因为这是一个微妙的任务,我需要一个建议:使用event.getSession().setMaxInactiveInterval(5*60);
我可以设置超时并使用expiredUrl("/login.html")
我可以捕获有关过期会话的错误并重定向到登录页面?这是对的吗?感谢
更新 :我尝试使用此代码(我的旧代码加上invalidSessionUrl和expiredUrl),但它总是在invalidSession.html页面上进行,然后我必须返回主页。进一步注销是登录页面而不是登录?注销页面
http
.authorizeRequests() //Authorize Request Configuration
.anyRequest().hasAnyRole(rolesArray)//.authenticated()
.and() //Login Form configuration for all others
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.exceptionHandling().accessDeniedPage("/403")
.and()
.logout()
.logoutSuccessUrl("/login?logout")
.permitAll()
.and()
.sessionManagement().invalidSessionUrl("/invalidSession.html").maximumSessions(1).expiredUrl("/sessionExpired.html");