在我的项目中,我在@AuthenticationPrincipal
的几个方法上使用@RestController
注释。我需要的唯一信息是自定义主体的id
字段。
目前这看起来很丑陋:
public void deleteUsers(@RequestParam(name = "id") List<Long> userIds, @AuthenticationPrincipal UserDetails userDetails) {
if (userDetails != null && userIds.contains(((MyUser) userDetails).getId())) {
throw new IllegalArgumentException("Cannot delete self");
}
userManager.deleteUsers(userIds);
}
这就是为什么我提出@AuthenticationId
由自定义HandlerMethodArgumentResolver
解决的想法。
问题是,我的项目目前不依赖于spring-mvc
依赖项。正如我所见,我需要声明此依赖项以自行注册自定义HandlerMethodArgumentResolver
:Inject your custom method argument in Spring MVC using HandlerMethodArgumentResolver
这看起来有点奇怪。
如果HandlerMethodArgumentResolver
概念依赖于spring-mvc
,如果我不包含依赖项,@AuthenticationPrincipal
如何工作?