如何实例化 java.security.Principal?所有的子类都被弃用
How do I instantiate java.security.Principal? All the subclasses are deprecated
我有一个接受 Principal 的 Spring API 服务。
public ResponseEntity<ApiCustomResponse> create(Principal principal, UrlInfoData urlinfo) throws ApiException;
主体由 Spring 为 OAuth2 API 调用自动创建。我想为网页管理界面使用相同的服务。
@Autowired
private IShortUrlService apiService;
...
Principal principal = new Principal();
apiService.create(principal, urlinfo);
我想用当前登录的管理员用户名实例化主体。但是,所有实例化 类 都已弃用。如何实例化 Principal 以传递给服务?
https://docs.oracle.com/javase/8/docs/api/java/security/Principal.html
既然java.security.Principal
是一个接口,为什么不实现呢?
Principal principal = new Principal() {
@Override
public String getName() {
return adminName;
}
}
apiService.create(principal, urlinfo);
此外,您可以通过以下方式获取当前登录用户的主体:SecurityContextHolder.getContext().getAuthentication().getPrincipal()
我有一个接受 Principal 的 Spring API 服务。
public ResponseEntity<ApiCustomResponse> create(Principal principal, UrlInfoData urlinfo) throws ApiException;
主体由 Spring 为 OAuth2 API 调用自动创建。我想为网页管理界面使用相同的服务。
@Autowired
private IShortUrlService apiService;
...
Principal principal = new Principal();
apiService.create(principal, urlinfo);
我想用当前登录的管理员用户名实例化主体。但是,所有实例化 类 都已弃用。如何实例化 Principal 以传递给服务?
https://docs.oracle.com/javase/8/docs/api/java/security/Principal.html
既然java.security.Principal
是一个接口,为什么不实现呢?
Principal principal = new Principal() {
@Override
public String getName() {
return adminName;
}
}
apiService.create(principal, urlinfo);
此外,您可以通过以下方式获取当前登录用户的主体:SecurityContextHolder.getContext().getAuthentication().getPrincipal()