【问题标题】:Setting Authentication in SecurityContext when using JWT使用 JWT 时在 SecurityContext 中设置身份验证
【发布时间】:2020-04-26 19:31:40
【问题描述】:

我为我的服务器使用 Spring Boot 安全性。 在将 jwt 保存身份验证对象验证到 SecurityContext 之后,我添加了从 OncePerRequestFilter 扩展的新过滤器和(根据网络上的许多教程)。 我不明白的是为什么我需要将身份验证保存在 SecurityContext 中?毕竟我在每个请求中验证来自客户端的 jwt,并且不需要 spring 来调用 Authentication 对象上的 isAuthenticated() 。 我错过了什么吗?

【问题讨论】:

    标签: spring-security


    【解决方案1】:

    Spring Security Authentication 基本上通过将其存储在SecurityContext 中来工作。有一个SecurityContextHolder 类存储SecurityContext,并用于许多需要通过检索Authentication 来做出身份验证/授权决策的地方。即使您已验证 JWT 以检查身份验证是否成功,Spring Security 仍然需要 Authentication 对象来做出其他决策,例如评估 hasRole()hasAnyRole() 等。

    【讨论】:

    • 在验证 JWT 后,是否还需要通过 Authentication 对象上的 setAuthenticated 设置为 true?
    猜你喜欢
    • 2016-01-02
    • 2021-06-28
    • 2020-02-01
    • 2021-10-07
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    相关资源
    最近更新 更多