java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > spring security登录成功通过Principal获取名返回空

spring security登录成功后通过Principal获取名返回空问题

投稿:jingxian

这篇文章主要介绍了spring security登录成功后通过Principal获取名返回空问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

spring security登录成功通过Principal获取名返回空

如上图:

前端登录后获取用户信息,principal 返回空值,经历种种排查发现,前端请求后端,请求头没有加  bearer

按上图配置问题解决

spring security principal credentials authorities details authenticated

spring security在进行认证时,会将用户名和密码封装成一个Authentication对象,在进行认证后,会将Authentication的权限等信息填充完全返回。

Authentication会被存在SecurityContext中,供应用之后的授权等操作使用。

此处介绍下Authentication,Authentication存储的就是访问应用的用户的一些信息。

下面是Authentication源码

public interface Authentication extends Principal, Serializable {
    //用户的权限集合
    Collection<? extends GrantedAuthority> getAuthorities();
 
    //用户登录的凭证,一般指的就是密码
    Object getCredentials();
 
    //用户的一些额外的详细信息,一般不用
    Object getDetails();
 
    //这里认为Principal就为登录的用户
    Object getPrincipal();
 
    //是否已经被认证了
    boolean isAuthenticated();
 
    //设置认证的状态
    void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException;
}

讲解了Authentication后,我们回过头来再看attemptAuthentication方法,该方法会调用AuthenticationManager的authenticate方法进行认证并返回一个填充完整的Authentication对象。

在这里我们又要讲解一下认证的几个核心的类,很重要!

来说一下这几个类的作用以及关联关系

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文