Shiro6-自定义 Realm 进行验证

在上一篇笔记中我们说过

IniRealm: 读取 ini 配置文件, 将来要连接数据,那么就需要仿照此类来读取数据库的账号和密码.

那么我们现在就要自定义一个 Realm 来从数据库中查询我们的用户信息.
注意: 我们一般自定义 Realm 实现都会实现 AuthorizingRealm 类.

自定义 Realm


    // 设置realm的名称
    @Override
    public void setName(String name) {
        super.setName("customRealm");
    }

    // 用于认证
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(
            AuthenticationToken token) throws AuthenticationException {

        // token是用户输入的
        // 第一步从token中取出身份信息
        String userCode = (String) token.getPrincipal();

        // 第二步:根据用户输入的userCode从数据库查询
        // ....
    

        // 如果查询不到返回null
        //数据库中用户账号是zhangsansan
        /*if(!userCode.equals("zhangsansan")){//
            return null;
        }*/
        
        
        // 模拟从数据库查询到密码
        String password = "111112";

        // 如果查询到返回认证信息AuthenticationInfo

        SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo(
                userCode, password, this.getName());

        return simpleAuthenticationInfo;

配置 Realm

我们自定义的 Realm 需要注入到 SecurityManager 中,由于我们是通过 ini 文件配置的,所以我们要创建一个 shiro-realm.ini 来专门配置我们的 Realm.

[main]
#自定义 realm
customRealm= 报名+类名
#将 realm 设置到 SecurityManager 中.
securityManager.realms=$customRealm

securityManager.realms是固定的.
customRealm 是自定义的名字.

测试

Factory<SecurityManager> factory = new IniSecurityManagerFactory(
                "classpath:shiro-realm.ini");

只需要改这一句代码就可以了.

有人可能会问为什么不需要配置[users]了呢?
答:因为我们现在是模拟从数据库查询,而不是读取 ini 配置文件中的用户名密码了.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,933评论 18 139
  • 身份验证,即在应用中谁能证明他就是他本人。一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用...
    小孩真笨阅读 547评论 0 0
  • 前言 由于最近项目中在用Realm,所以把自己实践过程中的一些心得总结分享一下。 Realm是由Y Combina...
    一缕殇流化隐半边冰霜阅读 73,536评论 213 517
  • “当我从十倒数到一的时候,你将会睁开眼睛,回到现实世界,恢复正常状态。然后,你会完全清醒,感觉舒服无比……” #艺...
    埃尔_e8f8阅读 578评论 1 2
  • 看来今天又是一个无眠的夜晚,把酒烛灯任思绪万千星辉。窗外一片漆黑,偶尔会听到夜归的鸟儿脚步轻轻走过。想...
    蝶憩香风阅读 391评论 0 0