中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
襄垣县| 乳山市| 道真| 南开区| 林口县| 慈利县| 德阳市| 庆云县| 福海县| 嵩明县| 德清县| 文水县| 鲁甸县| 浙江省| 贵港市| 城固县| 寿宁县| 从化市| 霸州市| 郑州市| 衡南县| 达州市| 白银市| 乾安县| 新兴县| 云浮市| 沁阳市| 河源市| 普安县| 靖西县| 济阳县| 昌图县| 丰原市| 丁青县| 丽水市| 南汇区| 外汇| 莒南县| 定兴县| 金阳县| 涪陵区|