【发布时间】:2025-12-11 16:35:01
【问题描述】:
我有一个 Spring MVC 应用程序,我在其中公开一个端点,还有一个小型库,我在其中编写了一些常用功能。
我有一个这样的实用程序类:
class SecurityUtil {
public static Principal getPrincipal(){
return SecurityContextHolder.getContext().getAuthentication()
.getPrincipal();
}
}
从控制器我正在做类似的事情:
class MyController {
public ResponseEntity<Void> myEndpoint(){
// do something
Principal principal = SecurityUtil.getPrincipal();
// use the principal information for some audit processes
}
}
在这种情况下,Principal 为空,但如果像这样替换我的代码:
class MyController {
public ResponseEntity<Void> myEndpoint(){
// do something
Principal principal = SecurityContextHolder.getContext()
.getAuthentication()
.getPrincipal();
// use the principal information for some audit processes
}
}
在这种情况下,Principal 不为空,它包含我需要的信息。
你知道会发生什么吗?
【问题讨论】:
-
我刚刚测试过,没关系。我仍然得到一个空值
-
您是否以 Spring bean 的身份访问
SecurityUtil?
标签: spring-mvc spring-security