【Spring】Spring Security 获取当前用户

import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;
private String getAgentId() {
        SecurityContext securityContext = SecurityContextHolder.getContext();
        if (securityContext.getAuthentication() instanceof EncryptAuthenticationToken) {
            EncryptAuthenticationToken authenticationToken = (EncryptAuthenticationToken) securityContext.getAuthentication();
            return authenticationToken.getUserDetails().getUsername();
        } else if (securityContext.getAuthentication() instanceof UsernamePasswordAuthenticationToken){
            User user = (User)securityContext.getAuthentication().getPrincipal();
            return user.getUsername();
        } else {
            throw new HealthRuntimeException("8888", "认证方式失败");
        }
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Security 中,要获取用户的权限可以通过以下步骤来实现: 1. 配置 Spring Security:首先,你需要在 Spring Security 的配置中定义用户的权限信息。这可以通过编写一个实现了 `UserDetailsService` 接口的自定义类来实现。在这个类中,你可以从数据库或其他数据源中获取用户的权限信息,并将其返回给 Spring Security。 2. 获取当前认证的用户:在需要获取用户权限的地方,你可以使用 `SecurityContextHolder` 类的静态方法 `getContext()` 获取当前认证的安全上下文对象。然后,可以通过调用 `getAuthentication()` 方法来获取当前认证的用户信息。 3. 获取用户权限:从上一步中获取到的用户信息中,你可以调用 `getAuthorities()` 方法来获取用户所拥有的权限列表。这个方法将返回一个 `Collection<? extends GrantedAuthority>` 类型的对象,其中包含了用户的权限信息。 以下是一个示例代码,演示了如何获取当前认证用户的权限: ```java import org.springframework.security.core.Authentication; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.context.SecurityContextHolder; // 获取当前认证用户的权限 public Collection<? extends GrantedAuthority> getCurrentUserAuthorities() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication != null) { return authentication.getAuthorities(); } return null; } ``` 请注意,以上代码中的 `getAuthorities()` 方法返回的是一个权限列表,每个权限都是一个 `GrantedAuthority` 对象。你可以根据具体需求进一步处理这些权限信息。 希望这个回答能够帮助到你!如果你还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值