`
suichangkele
  • 浏览: 200082 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

shiro学习12-访问权限控制-shiroFilterFactoryBean

阅读更多

从这一节开始开始学习请求的访问控制,即用户的每一次的访问的限制,这个事根据配置的用户的角色和权限来决定url对于特定的用户能不能访问。

 

我们从shiroFilterFactoryBean开始。

这个类是真正的filter,我们在web.xml中配置的DelegatingFilterProxy其实就是代理的他,当每一次请求来了之后,这个代理的fiter会将请求转发给这个正真的filter,但是这个真正的filter并没有实现filter接口,他往spring的 context中放置的就是一个filter——SpringShiroFilter,原因在于他的getObject方法返回的值一个SpringShiroFilter,源码:

public Object getObject() throws Exception {

        if (instance == null) {

            instance = createInstance();

        }

        return instance;

}

而且放入的类也是这个类:

public Class getObjectType() {

        return SpringShiroFilter.class;

}

所以我们配置的DelegatingFilterProxy其实是将清秋转发给了这个SpringShiroFilter,这个类其实就是一个AbstractShiroFilter,所有运行的代码都在这个类中,关于这个类的介绍在后面的filter的章节中。

 

shiroFilterFactoryBean有连个属性:一个是filter,是一个map,用来存放我们在spring context中的所有的filter,键是filterbeannamevaluefilter,程序会将spring context中的所有的filter的子类放入到这个map里面。还有一个属性是filterChainDefinitionMap,用来存放放置的路径魔板和过滤器的名字。但是我没有搞懂它里面到底是如何约定的,如果我配置上key的话,比如如下,就会报错

<property name="filterChainDefinitions">

      <map>

              <entry key="NO1" value="/visit=checkAuthenticatedFilter[a,b,3]"/>

              <entry key="NO2" value="/visit2=checkAuthenticatedFilter[C,D,4]"/>

      </map>    

</property>

还是按照别人已经弄成功的例子来配置吧,如果配置成如下,

<property name="filterChainDefinitions">

     <value>

         /visit=checkAuthenticatedFilter[a,b]     //这里面一定要有换行符,但是千万不要有\t(制表符,会出错),有空格不要紧,都会删除掉的。

          /visit2=checkAuthenticatedFilter[c,d]

     </value>

</property>

他在转化为filterChainDefinitionMap时是:

/visit=checkAuthenticatedFilter[a,b], /visit2=checkAuthenticatedFilter[c,d]这个是我debug时看到的,可以发现他是将换行符变为了分隔符,然后将等号变为了keyvalue的标记。然后调用生成的DefaultFilterChainManager

 

 

分享到:
评论

相关推荐

    springboot-shiro-role-demo.zip

    在登录时,Shiro会通过`UserRealm`从数据库中获取用户的角色信息,然后在访问控制时检查用户是否有足够的权限执行某个操作。 最后,你可以通过在Controller层的方法上添加`@RequiresRoles`或`@RequiresPermissions`...

    shiro-springmvc-gradle整合

    4. **Shiro-Spring整合**:通过`ShiroFilterFactoryBean`和`ShiroConfig`配置类,将Shiro与Spring容器集成。这样,我们可以利用Spring的依赖注入来管理Shiro的组件。 5. **安全控制**:在控制器方法上添加注解,如`...

    单点登录sso-shiro-cas-maven

    1. 应用系统采用shiro做权限控制,并且跟cas集成 2. 在/spring-node-1/src/main/resources/conf/shiro.properties 文件中 ``` properties shiro.loginUrl=...

    springboot-shiro-mybatis-demo.zip

    同时,还需要自定义过滤器链,比如 anon(匿名访问)、authc(身份验证过滤器)等,以控制不同URL的访问权限。 MyBatis的配置主要包括数据源、SqlSessionFactory和Mapper扫描。在`application.properties`或`...

    Shiro-springBoot-mysql集成

    最后,我们可以在Controller层编写登录和权限相关的接口,利用Shiro提供的注解`@RequiresAuthentication`、`@RequiresRoles`和`@RequiresPermissions`来实现权限控制。 例如,一个简单的登录接口可以这样编写: ``...

    SpringBoot与Shiro整合-权限管理实战视频+源码

    ### SpringBoot与Shiro整合-权限管理实战视频+源码 ...通过本篇介绍,我们了解了如何在Spring Boot项目中集成Shiro,并实现了基于角色和权限的访问控制。这对于开发安全可靠的现代Web应用来说至关重要。

    springmvc+shiro配置教程

    * 权限控制:Shiro根据用户的角色,控制用户的访问权限。 六、结论 本文详细介绍了如何在SpringMvc项目中配置Shiro,以实现基于角色的访问控制。Shiro是一个功能强大且灵活的安全框架,广泛应用于Java Web开发中。...

    springboot整合shiro的权限控制系统

    本项目将详细介绍如何在Spring Boot应用中整合Shiro实现一套简洁而实用的权限控制系统。 首先,我们需要理解Spring Boot与Shiro的基本概念。Spring Boot提供了一个快速构建和运行Spring应用的环境,通过自动配置和...

    Spring整合Shiro做权限控制模块详细案例分析

    在本文中,我们将深入探讨如何将Spring框架与Apache Shiro安全框架整合,以实现一个强大的权限控制模块。Spring是企业级应用开发的事实标准,而Shiro则是一个轻量级的安全框架,提供了身份验证、授权、会话管理和...

    S17-shiro权限绕过1

    - **漏洞利用**:如 CVE-2020-1957,这是一个 Shiro 的认证漏洞,攻击者可以利用此漏洞绕过正常的认证流程,获取非法访问权限。 为防止权限绕过,应确保以下几点: - **细致的过滤链配置**:所有需要保护的资源都...

    Shiro-SpringBoot.整合

    5. **安全控制器**:创建带有 Shiro 注解的控制器,例如 `@RequiresAuthentication`,`@RequiresRoles` 和 `@RequiresPermissions`,以实现基于角色和权限的访问控制。 6. **会话管理**:Shiro 提供了会话管理功能...

    spring-boot-shiro.rar

    3.登录情况访问api接口:访问api接口---&gt;shiro配置拦截——-&gt;跳转到shiro的权限验证方法doGetAuthorizationInfo--------》【不通过跳转到shiro配置的 shiroFilterFactoryBean.setUnauthorizedUrl("/noPermission");...

    shiro权限例子

    Shiro 还提供了一些内置过滤器,如 `authc`(认证过滤器)、`perms`(权限过滤器)等,它们可以用来控制用户的访问权限。在 `web.xml` 中,我们需要配置 Shiro Filter Chain 定义,比如: ```xml &lt;filter-name&gt;...

    springboot-08-shiro.rar

    登录成功后,根据用户角色和权限分配相应的访问权限。 总结,SpringBoot与Shiro的整合能帮助开发者快速搭建安全控制体系,通过简单的配置和代码就能实现用户的登录、权限控制等功能,大大提高了开发效率。在实际...

    shiro 权限 ssm

    - 授权是控制用户对资源访问权限的过程。Shiro支持角色(Role)和权限(Permission)两种方式。你可以根据用户的角色赋予不同的权限,或者直接分配具体的权限字符串。在Realm的doGetAuthorizationInfo方法中,返回...

    非maven的ssm整合shiro

    8. **权限控制**: 在Action或Controller中,可以使用Shiro提供的注解`@RequiresPermissions`和`@RequiresRoles`来实现基于角色和权限的访问控制。 9. **会话管理**: Shiro还提供了会话管理功能,可以配置会话超时、...

    SSM+shiro登录控制

    此外,Shiro还支持基于角色的权限控制,可以在配置中指定哪些URL需要特定角色才能访问。例如,你可以创建自定义的`RolePermissionRealm`,在其中实现权限的解析和验证,然后在过滤链定义中添加角色检查。 最后,...

    springboot-shiro

    3. 编写Filter配置:在`WebSecurityConfig`中配置ShiroFilterFactoryBean,设置过滤器链,例如登录、登出、访问控制等。 4. 缓存策略:如果选择Redis作为缓存,需要配置RedisManager并注入到Shiro的CacheManager中...

    springboot-shiro-demo.zip

    通过这个示例项目,开发者不仅可以了解 SpringBoot 和 Shiro 的基本整合方式,还能学习到如何在实际项目中实现用户登录、权限控制等功能。这为构建一个安全的 Web 应用提供了坚实的基础。在实际开发中,可以根据需求...

    互联网架构权限认证ApacheShiro零基础到高级实战 视频教程 下载因为太大存百度云盘4.zip

    │ 1-2权限控制和初学JavaWeb处理访问权限控制.mp4 │ ├─第2章-大话权限框架核心知识ACL和RBAC │ 2-1权限框架设计之ACL和RBAC讲解.mp4 │ 2-2主流权限框架介绍和技术选型讲解.mp4 │ ├─第3章-...

Global site tag (gtag.js) - Google Analytics