亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

spring中security怎么獲取當前用戶

小億
170
2023-12-13 22:30:26
欄目: 編程語言

在Spring Security中,可以通過以下方式來獲取當前用戶:

  1. 通過SecurityContextHolder獲取當前認證的Authentication對象,然后通過Authentication對象獲取當前用戶的Principal(主體)信息。
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();
    }
}
  1. 在Controller層中,可以使用@AuthenticationPrincipal注解將當前用戶作為方法參數直接注入。
@GetMapping("/user")
public String getUserInfo(@AuthenticationPrincipal UserDetails userDetails) {
    String username = userDetails.getUsername();
    // ...
}
  1. 使用SecurityExpressionMethods提供的hasRole、hasAuthority等方法判斷當前用戶是否具有指定的角色或權限。
@PreAuthorize("hasRole('ROLE_ADMIN')")
public void someMethod() {
    // ...
}

需要注意的是,以上方法僅適用于已經通過認證的用戶。如果用戶未認證或未登錄,以上方法將無法獲取到當前用戶信息。

0
秦皇岛市| 桓仁| 十堰市| 保德县| 唐海县| 汪清县| 吐鲁番市| 拉萨市| 瑞安市| 磴口县| 革吉县| 兰西县| 读书| 闽清县| 平利县| 大冶市| 台中市| 湖州市| 镇远县| 浦城县| 湄潭县| 万源市| 潜山县| 通渭县| 墨竹工卡县| 长顺县| 雅安市| 桓台县| 星子县| 临汾市| 晋州市| 海林市| 吉安县| 竹北市| 化州市| 金坛市| 涞源县| 石屏县| 长宁区| 海门市| 古丈县|