【问题标题】:Checking for existing HttpSession in Spring Security在 Spring Security 中检查现有的 HttpSession
【发布时间】:2012-05-08 14:18:29
【问题描述】:

是否可以通过检查 Spring Security 中现有的 HttpSession 来验证用户身份?我希望用户在一个 URL (http://example.com/auth) 上通过 CAS 进行身份验证,而不是其他 URL。例如,如果他们直接访问http://example.com/content,那么如果他们尚未登录 CAS,我想检查 HttpSession 并返回 401 Unauthorized 代码。如果他们已经进入 /auth 页面并登录,那么进入 /content 将返回内容。这样做的主要原因是避免 CAS 在身份验证期间导致的任何重定向。

我是 Spring Security 的新手,不知道我是否需要自定义 AuthenticationManager、AuthenticationEntryPoint、两者或其他东西。 AuthenticationManager 无法让我访问 HttpSession,而 AuthenticationEntryPoint 似乎不是实现此功能的正确位置。

有什么想法吗?

【问题讨论】:

    标签: java spring spring-mvc spring-security


    【解决方案1】:

    Spring Security 没有使用 HTTP 会话。 相反,您可以轻松调用此静态方法:

    SecurityContextHolder.getContext().getAuthentication();
    

    坦率地说,我认为您需要正确配置 Spring 安全性以避免检查身份验证并手动重定向到其他页面。

    【讨论】:

    • 是的,我通常会“正确”配置 Spring Security,但我有一种情况,当会话不存在时,我需要防止某些页面上的 CAS 重定向。
    • 在哪里检查 getAuthentication() 方法?我会在 Spring Security 中使用某种过滤器吗?
    猜你喜欢
    • 2017-12-31
    • 1970-01-01
    • 2012-04-20
    • 2011-07-22
    • 2020-07-05
    • 2014-12-11
    • 1970-01-01
    • 2015-01-15
    • 2016-12-03
    相关资源
    最近更新 更多