Spring Security 获取当前用户信息

199 阅读1分钟

前提:要会了解Spring Security

其实基本都是存在 Authentication 这个对象里面的, 看你怎么拿而已

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (!(authentication instanceof AnonymousAuthenticationToken)) {
    LoginUser principal = (LoginUser) authentication.getPrincipal();
    return principal.getUser();
}

因为我存有权限信息,所以不能直接强转成user,要转成loginuser,然后再getUser对象。 loginuser 就是我定义的 实现 UserDetails 的类, UserDetails能看这篇的大家肯定都懂啦,就是替换框架原始账密那个接口。

image.png

如果您只想要账户信息,可以不用强转user类,直接用principal.getName,因为我用的是创建用户的id,和修改用户的id,所以要强转。

不强转如下:

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (!(authentication instanceof AnonymousAuthenticationToken)) {
    String userName = authentication.getName();
    return userName;
}

大概思路就是当你使用Spring Security验证成功后 你想回去当前用户信息 先把 Authentication 对象获取出来

然后在一步异步点