springsecurity 上下文
时间: 2023-08-08 09:11:37 浏览: 131
Spring Security的上下文是指在应用程序中管理和传递安全信息的机制。在Spring Security中,有几种策略可以用于管理安全上下文。
一种常用的策略是MODE_THREADLOCAL,它是Spring Security默认的上下文管理策略。使用这种策略,Spring Security使用ThreadLocal来管理上下文。ThreadLocal确保每个线程只能访问自己线程中的ThreadLocal中的数据,其他线程无法访问。在身份验证过程结束后,可以使用静态的SecurityContextHolder.getContext()方法从持有者请求安全上下文。从安全上下文中,可以进一步获取Authentication对象,该对象存储着已验证实体的详细信息。例如,可以通过以下代码获取已认证用户的用户名:
@GetMapping("/hello")
public String hello(){
SecurityContext context = SecurityContextHolder.getContext();
Authentication authentication = context.getAuthentication();
return "Hello," + authentication.getName() + "!";
}
另一种策略是DelegatingSecurityContextCallable,它可以将安全上下文传递给新线程。通过使用DelegatingSecurityContextCallable装饰任务,可以确保新线程也能够访问安全上下文。
总之,Spring Security提供了多种策略来管理和传递安全上下文,以确保安全信息在应用程序中得到正确处理和传递。\[1\]\[2\]\[3\]
#### 引用[.reference_title]
- *1* *2* *3* [SpringSecurity(八)--SecurityContext安全上下文](https://blog.csdn.net/qq_44754515/article/details/127406789)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文