Spring安全性和会话超时

时间:2016-06-30 07:45:14

标签: java spring spring-mvc session spring-security

我使用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");

0 个答案:

没有答案