我需要一个从GUI设置会话超时的选项。目前,我们可以使用配置
全局更改会话超时server.session.timeout=120
server.session.cookie.max-age=120
server.session.timeout=120`
我们也可以为每个会话设置会话超时。
session.setMaxInactiveInterval(120);
但是没有找到全局设置会话超时的选项。有没有办法使用弹簧靴
来做到这一点提前致谢
答案 0 :(得分:2)
我认为您可能需要使用spring jdbc session或redis session,以便您可以完全控制会话存储。
Spring boot jdbc session提供了一个bean
@Autowired
JdbcOperationsSessionRepository sessionRepository;
使用它我们可以从控制器设置空闲超时。
只需添加依赖项,然后为您的配置添加@EnableJdbcHttpSession。
但看起来会话表不是自动创建的,你需要手动创建表。你可以在
中找到陈述组织/ springframework的/会话/ JDBC /模式 - * SQL
编辑:1
即使jdbc session提供了一种设置全局默认超时的方法,我发现它无法正常工作。似乎唯一的解决方案是在用户首次使用以下代码时设置会话超时。
session.setMaxInactiveInterval(120);
答案 1 :(得分:1)
实现这一目标的一种方法:
以下代码使当前用户的http会话无效:
public static void customLogout(HttpServletRequest request, HttpServletResponse response){
CookieClearingLogoutHandler cookieClearingLogoutHandler = new CookieClearingLogoutHandler(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY);
SecurityContextLogoutHandler securityContextLogoutHandler = new SecurityContextLogoutHandler();
cookieClearingLogoutHandler.logout(request, response, null);
securityContextLogoutHandler.logout(request, response, null);
}