java - 如何在 Spring MVC 应用程序中自动导航到登录页面?

标签 java spring spring-mvc session spring-security

我有一个 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/

相关文章:

Java - 确定用户输入\n和按html形式按回车之间的区别

javax.persistence.PersistenceException : org. hibernate.exception.SQLGrammarException:无法使用 heroku PostgreSQL 执行查询

Java,选择子序列

java - 从 RecyclerView 适配器到主脚本的 getSelectedButtonID 的未更新值

java - 以编程方式设置GridView和ImageView的宽度和高度

java - 关于在使用 Controller 基类时继承如何影响 Spring Controller 类的问题

java - 一键执行 2 种不同操作

java - 跨越多个存储库的 Spring Data Transaction

spring - Thymeleaf - 使用 PUBLICID "null"请求的不受支持的实体

java - 如何使用 JSP 使用 Spring MVC 显示图像