在Spring Security中,可以通過以下方式來獲取當前用戶:
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication != null) {
Object principal = authentication.getPrincipal();
if (principal instanceof UserDetails) {
String username = ((UserDetails)principal).getUsername();
} else {
String username = principal.toString();
}
}
@GetMapping("/user")
public String getUserInfo(@AuthenticationPrincipal UserDetails userDetails) {
String username = userDetails.getUsername();
// ...
}
@PreAuthorize("hasRole('ROLE_ADMIN')")
public void someMethod() {
// ...
}
需要注意的是,以上方法僅適用于已經通過認證的用戶。如果用戶未認證或未登錄,以上方法將無法獲取到當前用戶信息。