栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spring Security的SecurityContextHolder:会话或请求绑定?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Security的SecurityContextHolder:会话或请求绑定?

这取决于您如何配置它(或者说,您可以配置其他行为)。

在Web应用程序中,您将使用与

ThreadLocalSecurityContextHolderStrategy
交互的
SecurityContextPersistenceFilter

的Java文档

SecurityContextPersistenceFilter
以:

在请求之前,使用从已配置的{@link SecurityContextRepository}获取的信息填充{@link
SecurityContextHolder},并在请求完成并清除上下文所有者后将其存储回存储库中。默认情况下,它使用{@link
HttpSessionSecurityContextRepository}。请参阅此类以获取与HttpSession相关的配置选项的信息。

顺便说一句:HttpSessionSecurityContextRepository是SecurityContextRepository的唯一实现(我在默认库中找到了)

它是这样的:

  • HttpSessionSecurityContextRepository
    用途HttpSession中(密钥=“SPRING_SECURITY_CONTEXT”)来存储一个
    SecurityContext
    对象。
  • SecurityContextPersistenceFilter
    是一种使用一个过滤器
    SecurityContextRepository
    例如
    HttpSessionSecurityContextRepository
    加载和存储
    SecurityContext
    对象。如果HttpRequest通过了过滤器,则过滤器
    SecurityContext
    将从存储库中获取并将其放入SecurityContextHolder(
    SecurityContextHolder#setContext
  • SecurityContextHolder
    有两个方法
    setContext
    getContext
    。两者都使用a
    SecurityContextHolderStrategy
    来指定在set-和get-Context方法中究竟要执行什么操作。-例如,
    ThreadLocalSecurityContextHolderStrategy
    使用本地线程存储上下文。

因此,总而言之:用户主体(SecurityContext的元素)存储在HTTP会话中。对于每个请求,它都放在访问它的本地线程中。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/449517.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号