Spring MVC,从服务层的安全上下文中获取主体

2022-09-03 02:27:59
  1. 在spring控制器中获取主体作为参数,然后将其传递给服务层,而不是立即在服务层中获取主体有什么好处?Principal principalSecurityContextHolder.getContext().getAuthentication().getPrincipal()
  2. 在服务层中获取主体详细信息的最佳方法是什么,而无需检查和对象是否在任何地方都为空(类似于自定义包装器)?getAuthentication()getPrincipal()

答案 1
    • 您的服务 API 将更易于使用。您将直接看到对主体的依赖性,因此您不希望在不存在主体的环境中错误地调用某些服务方法。
    • 一般来说,对SpringSecurity代码的依赖性越低,意味着在迁移到新的Spring Security版本的情况下,问题就越少。
    • 您将能够在Spring Security不存在的环境中重用您的服务层。
  1. 准备一些包装类(例如身份验证服务)。将 getPrincipal() 方法添加到其中。实施检查。将身份验证服务注入到任何地方,而不是直接调用 SecurityContextHolder。

答案 2

推荐