【问题标题】:Spring security: Session is invalidated when user isn't authenticatedSpring security:当用户未通过身份验证时,会话无效
【发布时间】:2013-07-20 17:16:22
【问题描述】:

每当我运行我的 Web 应用程序并转到默认页面时,我都会在我的权限内获得一个 ROLE_ANONYMOUS 用户,这是预期的。但是,当我空闲时,会话超时导致我的invalid-session-url 被触发。无论如何从会话超时中排除未经身份验证的用户?

编辑:我发现最简单的方法是设置InvalidSessionStrategy。问题是,我不知道该怎么做。我真的不需要创建自己的SessionManagementFilter 实现。我想要的是控制应用程序如何处理invalid-session-url。谁能帮帮我?

【问题讨论】:

    标签: java spring session spring-security


    【解决方案1】:

    即使对于未经身份验证的用户来说,进行会话也是一种很好的做法。以在重定向之前检查身份验证的方式实现您的 invalid-session-url。如果用户未通过身份验证,则重定向到 session-idle-timeout 页面。

    【讨论】:

    • 每当应用程序触发 invalid-session-url 时,我就会失去以前拥有的所有权限,而我得到的只是 ROLE_ANONYMOUS。
    • @MiguelPortugal 这就是应该发生的事情。如果用户没有经过身份验证,那么他肯定就没有任何权限,对吧?
    • 是的,我知道,但是如果我通过了身份验证——例如,我有一个名为 ROLE_USER 的角色——一旦到达无效会话 URL,它就会消失。由于会话已经被 失效,我之前的所有角色都消失了,因为显然 Spring 清除了所有内容。
    • Spring 清除一切是什么意思?你在哪里存储你的角色?你在使会话无效时到底在做什么?
    • 据我观察,每当 Spring 检测到无效会话时,存储在 Authentication 对象中的权限都将被删除并替换为默认的“ROLE_ANONYMOUS”。基本上,会立即创建一个新会话。我想要做的基本上是根据身份验证对象中存储的角色(权限)具有多个“无效会话 URL”。 ROLE_ANONYMOUS 应该重定向到匿名会话过期 ROLE_** 应该重定向到会话过期
    猜你喜欢
    • 2016-01-05
    • 1970-01-01
    • 2017-10-08
    • 2017-11-30
    • 2014-12-20
    • 2019-12-26
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多