Spring Security中的SecurityContext和SecurityContextHolder

💡 原文中文,约2800字,阅读约需7分钟。
📝

内容提要

SecurityContext和SecurityContextHolder是Spring Security的两个基本类,用于存储已验证用户的详细信息。通过SecurityContextHolder可以访问安全上下文,其中使用ThreadLocal对象存储安全上下文。可以通过SecurityContextHolder获取SecurityContext,然后从中检索当前用户的详细信息。在Spring Security中,可以通过getAuthentication()方法获取Authentication对象,再将其转换为UserDetails对象。建议在Spring MVC控制器中声明依赖关系,让Spring提供Principal对象,而不是手动查询。

🎯

关键要点

  • SecurityContext 和 SecurityContextHolder 是 Spring Security 的基本类,用于存储已验证用户的详细信息。
  • SecurityContextHolder 使用 ThreadLocal 对象存储安全上下文,确保同一执行线程中的方法可以访问安全上下文。
  • Spring Security 会负责清理 ThreadLocal,避免内存泄漏。
  • 可以通过 SecurityContextHolder 获取 SecurityContext,并从中检索当前用户的详细信息。
  • 获取当前用户名的步骤包括调用 getAuthentication() 方法获取 Authentication 对象,并将其转换为 UserDetails 对象。
  • 建议在 Spring MVC 控制器中声明依赖关系,让 Spring 提供 Principal 对象,而不是手动查询。
  • 可以通过 Principal 或 Authentication 对象获取当前登录用户的用户名。
  • 了解 SecurityContext 和 SecurityContextHolder 的细节对于使用 Spring Security 是有益的。
🏷️

标签

➡️

继续阅读