【Spring Security】 SecurityContextHolder
【Spring Security】 SecurityContextHolder
Metadata
title: 【Spring Security】 SecurityContextHolder
date: 2023-02-01 19:32
tags:
- 行动阶段/完成
- 主题场景/组件
- 笔记空间/KnowladgeSpace/ProgramSpace/ModuleSpace
- 细化主题/Module/SpringSecurity
categories:
- SpringSecurity
keywords:
- SpringSecurity
description: 【Spring Security】 SecurityContextHolder
【Spring Security】 SecurityContextHolder
Spring Security 身份验证模型的核心是 SecurityContextHolder(安全上下文持有者),它包含了 SecurityContext(安全上下文)。SecurityContextHolder 是 Spring Security 存储已认证用户详细信息的地方。
可以通过访问 SecurityContextHolder 希望获取认证过的用户信息:
SecurityContext context = SecurityContextHolder.getContext();
Authentication authentication = context.getAuthentication();
String username = authentication.getName();
Object principal = authentication.getPrincipal();
Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
默认情况下,SecurityContextHolder 使用 ThreadLocal 来存储信息,这意味着 SecurityContext 始终可用于同一线程中,即使 SecurityContext 未显式作为参数传递给这些方法。ThreadLocal 如果在处理当前主体的请求后注意清除线程,则以这种方式使用是非常安全的。Spring Security 的 FilterChainProxy 确保 SecurityContext 始终清除 。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 蝶梦庄生!
评论