我有一个 Spring MVC 应用程序,当 session 过期时,用户必须重定向到登录页面。我尝试了建议的通用解决方案 here 。但它不会自动重定向,而是在用户单击任何链接或采取某些操作时重定向。
然后我创建了这个类
@Component
public class SessionEndedListener implements ApplicationListener<SessionDestroyedEvent> {
protected static Logger log = LogManager.getLogger(SessionEndedListener.class);
@Override
public void onApplicationEvent(SessionDestroyedEvent event)
{
log.info("Session expired or have been destroyed!");
}
}
现在,我的 onApplicationEvent
在 session 过期时被触发。但是,我无法从此方法进行重定向。
session 过期时如何自动重定向? 我的 Spring 版本是 4.2.5,Spring Security 版本是 4.1.4。
最佳答案
这不是 http 的工作方式,基本上你无法做到这一点,因为当你在网站/应用程序中时,服务器和客户端之间没有长期的连接,所以基本上服务器可以告诉你的 session 的唯一时间是过期是指您执行某项操作并与之通信时。
表示您可以尝试一些常见的替代方案,例如添加 javascript 客户端代码(例如每 5/10 秒在浏览器中执行一次)和 ping 服务器来确定 session 是否已过期。
关于java - 如何在 Spring MVC 应用程序中自动导航到登录页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50463541/