• Shiro获取登录人数据


    Shiro获取登录人数据

    基本信息

    • principals/身份
      principals:身份,即主体的标识属性,如用户名、邮箱等,确保唯一即可。

    • credentials/证明
      credentials:证明/凭证,即只有主体知道的安全值,如密码/数字证书等。

    最常见的principals和credentials组合就是用户名/密码了。

    使用

    • 存储登陆人数据
      核心为SimpleAuthenticationInfo
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token)
            throws AuthenticationException {
            xxx
            return new SimpleAuthenticationInfo(user, accessToken, getName());
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    该构造方法有三个参数

        public SimpleAuthenticationInfo(Object principal, Object credentials, String realmName) {
            this.principals = new SimplePrincipalCollection(principal, realmName);
            this.credentials = credentials;
        }
    
    • 1
    • 2
    • 3
    • 4
    • principal: 可以放用户名一类的,但实际中更多为存储一个用户对象
    • credentials:放密码,token之类的唯一登录标志
    • realmName:名字

    具体例子如下:

    @Component
    public class OAuth2Realm extends AuthorizingRealm {
    
    
        @Override
        public boolean supports(AuthenticationToken token) {
            return token instanceof OAuth2Token;
        }
    
        /**
         * 授权(验证权限时调用)
         */
        @Override
        protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
            xxx
            return info;
        }
    
        /**
         * 认证(登录时调用)
         */
        @Transactional(rollbackFor = Throwable.class)
        @Override
        //  cas server认证成功,返回给前端token后,前端会再调用一次登录接口(/sys/user/ping),把拿到的token传进来
        protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token)
            throws AuthenticationException {
            xxx
            return new SimpleAuthenticationInfo(user, accessToken, getName());
        }
    
        private URI getServiceValidateUri(String accessToken) {
            xxx
        }
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 获取登陆人数据
    (具体的用户类)SecurityUtils.getSubject().getPrincipal();
    
    • 1
  • 相关阅读:
    CentOS安装配置freeIPA
    【愚公系列】2022年11月 .NET CORE工具案例-.NET 7中的WebTransport通信
    企业架构LNMP学习笔记40
    C语言指针的介绍
    出差学小白知识No5:|Ubuntu上关联GitLab账号并下载项目(ssh key配置)
    微信公众号开发:网页授权
    C#流程控制语句
    Grasp Detection论文、代码汇总
    TDesign设计系统全方位解析
    【Unity】U3D TD游戏制作实例(五)防御塔设计:对象排序、锁定敌人、攻击敌人、防御塔特色功能实现
  • 原文地址:https://blog.csdn.net/qq_50665031/article/details/126603409