`

Shiro是如何加载相应的Realm的?

 
阅读更多

最近项目中用到了Shiro框架,Realm是具体实现业务逻辑的类,那么Shiro是如何加载相应的Realm呢?

跟踪源码发现

在ModularRealmAuthenticator.doMultiRealmAuthentication()方法中
下面代码用来加载相应的Realm
  for (Realm realm : realms) {
            aggregate = strategy.beforeAttempt(realm, token, aggregate);
            if (realm.supports(token)) {
                log.trace("Attempting to authenticate token [{}] using realm [{}]", token, realm);
                AuthenticationInfo info = null;
                Throwable t = null;
                try {
                    info = realm.getAuthenticationInfo(token);
                } catch (Throwable throwable) {
                    t = throwable;
                    if (log.isDebugEnabled()) {
                        String msg = "Realm [" + realm + "] threw an exception during a multi-realm authentication attempt:";
                        log.debug(msg, t);
                    }
                }
 
                aggregate = strategy.afterAttempt(realm, token, info, aggregate, t);
 
            } else {
                log.debug("Realm [{}] does not support token {}.  Skipping realm.", realm, token);
            }
        }
根据 realm.supports(token)方法来判断当前的令牌信息对应的Realm.
在 基类AuthenticatingRealm中
public boolean supports(AuthenticationToken token) {
        return token != null && getAuthenticationTokenClass().isAssignableFrom(token.getClass());
    }
也就是每个 Realm只要覆盖getAuthenticationTokenClass()方法来支持相应的Token类.
 public Class getAuthenticationTokenClass() {
        return authenticationTokenClass;
    }
分享到:
评论

相关推荐

    shiro-realm案例

    shiro自定义realm案例,参考文档:http://blog.csdn.net/qq_19558705/article/details/50775509

    shiro web中自定义Realm

    这里是shiro在web应用中自定义Realm的代码,以便做一个参考

    shiro权限框架自定义Realm示例

    shiro权限框架自定义Realm示例

    shiro第六章Realm完整Demo

    shiro第六章Realm完整Demo

    Shiro基本使用详解以及多Realm使用和配置.rar

    Shiro基本使用详解以及多Realm使用和配置,拿来可以直接使用,也可以在此基础上进行自己业务逻辑的添加和修改,如果希望进一步深入学习,可以查看我的博客,可以查看...或给我留言

    尚硅谷Shiro视频教程

    尚硅谷_Shiro_实现认证 Realm · 10.尚硅谷_Shiro_密码的比对 · 11.尚硅谷_Shiro_密码的MD5加密 · 12. 尚硅谷_Shiro_密码的MD5盐值加密 · 13.尚硅谷_Shiro_多 Realm 验证 · 14.尚硅谷_Shiro_认证策略 · ...

    SpringBoot整合Shiro示例实现动态权限加载更新+Session共享+单点登录

    SpringBoot整合Shiro示例实现动态权限加载更新+Session共享+单点登录 SpringBoot整合Shiro示例实现动态权限加载更新+Session共享+单点登录 SpringBoot整合Shiro示例实现动态权限加载更新+Session共享+单点登录 ...

    shiro demo 实例 jdbcRealm

    shiro demo 源码里面2中realm 一种是jdbcRealm 一种是自定义realm 有sql脚本。请看db文件夹下的readme.txt 有关这个项目的详细介绍,使用了简单的标签库权限控制当做例子

    shiro授权 shiro和企业项目整合开发

    shiro授权,自定义realm,shiro与项目整合,shiro缓存,验证码,记住我

    shiro教程 跟我学Shiro教程

    本资源包含: Apache_Shiro参考手册中文版.pdf; Shiro教程.pdf; shrio-example.rar; 跟我学Shiro教程.zip

    Apache_Shiro_使用手册(四)Realm_实现

    Apache_Shiro_使用手册(四)Realm_实现

    从实例入手学习Shiro自定义Realm实现查询数据进行验证示例代码.zip

    从实例入手学习Shiro自定义Realm实现查询数据进行验证示例代码.zip

    用于测试shiro中自定义Realm的测试代码

    这个程序是eclipse编写的,学习shiro框架,入门的,用于测试自定义的Realm的小例子,仅仅用于学习,不得用于商业用途

    Apache_Shiro参考手册中文版.zip

    Introduction to Apache Shiro What is Apache Shiro? Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密。 Apache Shiro 的首要目标是易于使用和理解。安全有时候...

    Shiro原理+配置

    三个核心组件:Subject, ...Realm: Realm充当了Shiro与应用安全数据间的"桥梁"或者"连接器"。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。

    Shiro 视频教程+源码+课件

    Apache Shiro 是目前使用率较高的一个 Java 安全框架。本视频基于 Shiro 的新版本 1.3.2 录制。内容涵盖 Shiro 认证、加密、授权、安全标签、安全注解、会话管理、缓存、Rememberme 等 JavaEE 企业级开发的核心技术...

    Shiro反序列化漏洞,Shiro版本升级资源

    shiro使用的版本是1.2.4,存在反序列化漏洞,我们采取的办法是手动升级到了1.2.6版本,但苦于无法验证是否解决了问题,后来发现了一款测试工具,ShiroExploit。 测试工具下载地址 ... 反序列化漏洞是如何产生的?...

    shiro入门学习demo源码

    <bean id="myShiroRealm" class="com.z.shiro.realm.ShiroRealm"> <property name="cacheManager" ref="cacheManager" /> </bean> <!-- Shiro Filter --> <bean id="shiroFilter" class="org.apache...

    简单的介绍,简单的配置,简单的扩展 shiro入门学习手册 共35页.pptx

    Apache Shiro是一个强大而灵活的开源安全框架,它能够干净利落地处理身份认证,授权,企业会话管理和加密。 以下是你可以用 Apache Shiro所做的事情: ? 验证用户 ? 对用户执行访问控制,如: ? 判断用户是否...

    Shiro入门教程

    Shiro入门实例 Shiro入门教程 Shiro框架学习demo http://www.xttblog.com/?p=669 权限管理教程。Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。 Shiro可以在任何环境下运行,小到最...

Global site tag (gtag.js) - Google Analytics