如何在 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 4 站点导航

请教在Spring MVC中,如何实现启动时从数据库读取信息

如何使用 Spring MVC 返回视频,以便可以使用 html5 <video> 标签进行导航?

请推荐用于 Spring MVC 3.0 的导航策略

Spring MVC 自定义标签如何使用@Autowired自动装配注解

AngularJS/ Spring Boot 应用程序 - 空闲时间后自动导航到登录页面