如何在 Spring MVC 应用程序中自动导航到登录页面?
Posted
技术标签:
【中文标题】如何在 Spring MVC 应用程序中自动导航到登录页面?【英文标题】:How to automatically navigate to login page in the Spring MVC app? 【发布时间】:2018-10-31 23:27:47 【问题描述】:我有一个 Spring MVC 应用程序,当会话过期时,用户必须重定向到登录页面。我尝试了建议的常见解决方案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
在会话到期时被触发。但是,我无法从此方法重定向。
会话过期时如何自动重定向? 我的 Spring 版本是 4.2.5,Spring Security 版本是 4.1.4。
【问题讨论】:
你的 UI 和你的后端之间一直没有联系。所以一般来说,HTTP 是请求-响应,你发送一个请求并得到响应,就是这样。例如,使用 websocket 创建全双工通信。您现在的行为是正确的 - 当您执行某些操作(向服务器请求)时,您应该被重定向,如果会话过期,服务器将重定向。 【参考方案1】:这不是http的工作方式,基本上你不能这样做,因为当你在一个网站/应用程序中时服务器和客户端之间没有长期的连接,所以基本上服务器可以告诉你的会话只有一次expired 是当你执行一个动作并与之通信时。
说您尝试了一些常见的替代方案,例如添加 javascript 客户端代码(例如在您的浏览器中执行一次,例如每 5/10 秒执行一次)和 ping 服务器以识别会话是否已过期。
【讨论】:
感谢您的回答,我按照您的建议解决了 JavaScript ping 到后端的问题。以上是关于如何在 Spring MVC 应用程序中自动导航到登录页面?的主要内容,如果未能解决你的问题,请参考以下文章
请教在Spring MVC中,如何实现启动时从数据库读取信息
如何使用 Spring MVC 返回视频,以便可以使用 html5 <video> 标签进行导航?