91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
临洮县| 瓮安县| 白银市| 南川市| 开封市| 定安县| 晋中市| 饶平县| 旅游| 临汾市| 柏乡县| 大渡口区| 文昌市| 韶关市| 安岳县| 堆龙德庆县| 桑植县| 兴业县| 翁源县| 铅山县| 平远县| 锡林浩特市| 乌拉特后旗| 宜都市| 黄浦区| 沽源县| 岐山县| 湘阴县| 东乌珠穆沁旗| 漳浦县| 密云县| 商洛市| 龙泉市| 尼勒克县| 灵山县| 兴隆县| 东阿县| 浮梁县| 灵石县| 全椒县| 永修县|