Spring安全认证和主体对象在控制器的方法中来自哪里?



我在Spring Boot@RestController中有一些方法,当我将它们添加为参数时,它们似乎可以神奇地访问Spring SecurityAuthenticationPrincipal对象。我想知道,我的方法如何与这些参数工作?它们来自哪里?下面是一个例子:

@GetMapping("/someEndpoint")
public ObjectNode someEndpoint(Authentication authentication) {
...
CustomAuthentication customAuthentication = (CustomAuthentication) authentication;
logger.debug("Name: {}", customAuthentication.getName());
...
}

@GetMapping("/anotherEndpoint)
public ObjectNode anotherEndpoint(Principal principal) {
logger.debug(principal.getName());
...
}

也不只是这些AuthenticationPrincipal对象。我也看到HttpServletRequest和其他参数有时在这些控制器端点。它们从何而来,为什么是可选的?在方法中是否有这些对象的列表?

所有问题的答案都在Spring参考文档

对于与身份验证相关的问题,请通读以从高层次上理解它如何在会话中可用。阅读AbstractAuthenticationProcessingFilter

通读文档,查看这里支持的控制器方法参数列表

  • Spring MVC参考文档
  • Spring安全参考

相关内容

  • 没有找到相关文章

最新更新