shiro提供的常见的默认过滤器

由于博客内容为空,暂无法提供包含关键信息的摘要。

 

web.xml配置 因为我们是与spring进行集成的,而spring的基本就是web项目的xml文件。所以我们在web.xml中配置shiros的过滤拦截。正常情况下,我们需要将shiro的filter配置在所有的filter前面,当然和encodingFilter这个filter是不区分前后的。因为两者互相不影响的。spring-shiro.xml 这里我们将来看看spring-shiro.xml的配置,这里我采取倒叙的方式讲解,我觉的倒叙更加的有助于我们理解代码。首先我们还记得在web.xml中配置的那个filter吧,名字shiroFilter,对spring-shiro.xml配置文件就是通过这个filter展开的。首先我们在web.xml配置的过滤器实际上是配置ShiroFilterFactoryBean,所以在这里需要将ShiroFilterFactoryBean定义为shiroFilter <!-- Shiro的核心安全接口,这个属性是必须的 --> <!-- 要求登录时的链接(可根据项目的URL进行替换),非必须的属性,默认会自动寻找Web工程根目录下的"/login.html"页面 --> <!-- 登录成功后要跳转的连接 --> <!-- 用户访问未对其授权的资源时,所显示的连接 --> <!-- 若想更明显的测试此属性可以修改它的值,如unauthor.jsp,然后用[玄玉]登录后访问/admin/listUser.jsp就看见浏览器会显示unauthor.jsp --> <!-- Shiro连接约束配置,即过滤链的定义 --> <!-- 此处可配合我的这篇文章来理解各个过滤连的作用http://blog.youkuaiyun.com/jadyer/article/details/12172839 --> <!-- 下面value值的第一个'/'代表的路径是相对于HttpServletRequest.getContextPath()的值来的 --> <!-- anon:它对应的过滤器里面是空的,什么都没做,这里.do和.jsp后面的*表示参数,比方说login.jsp?main这种 --> <!-- authc:该过滤器下的页面必须验证后才能访问,它是Shiro内置的一个拦截器org.apache.shiro.web.filter.authc.FormAuthenticationFilter --> /statics/**=anon /login.html=anon /sys/schedule.html=perms[sys:schedule:save] /sys/login=anon /captcha.jpg=anon /**=authc
<think>好的,我现在需要回答用户关于Apache Shiro中如何配置多个过滤器链的问题。首先,我需要回忆一下Apache Shiro的基础知识,尤其是关于过滤器链的部分。记得Shiro通过配置过滤器链来定义不同URL路径的安全规则,比如认证、授权等。 用户提到他们想了解是否支持多条过滤器链配置以及具体的实现方法和示例。根据之前学过的内容,Shiro过滤器链确实支持多路径配置,每个路径可以对应不同的过滤器组合。例如,不同的URL可能需要不同的认证方式或权限检查。 接下来,我需要确认具体的配置方法。通常在Shiro的配置文件(比如shiro.ini或Spring配置中),通过filterChainDefinitions参数来定义。每个条目对应一个URL模式和相应的过滤器列表,过滤器之间用逗号分隔。例如,/admin/**需要authc和roles[admin],而/api/**可能需要authcBasic和perms[api:access]。 然后,关于示例部分,我需要给出具体的配置代码,可能是在INI格式或Spring XML中的例子。同时,需要注意过滤器的顺序,因为Shiro会按照配置的顺序匹配第一个符合的路径,所以更具体的路径应该放在前面。 还需要提到动态配置的可能性,比如通过自定义的FilterChainManager,但用户可能更需要的是基本配置方法,所以先集中在静态配置上。另外,引用用户提供的参考内容,比如引用[3]和[4],说明如何分配链接的过滤,以及BasicHttpAuthenticationFilter的使用方法。 最后,验证配置是否正确,比如确保语法正确,过滤器名称正确,并且路径顺序合理。可能还需要提醒用户常见的错误,比如路径顺序错误导致某些规则不生效,或者过滤器名称拼写错误。 总结步骤应该是:解释Shiro支持多过滤器链配置,展示配置语法,提供示例,说明注意事项,引用相关文档部分,并生成相关问题。这样用户就能清楚如何配置多个过滤器链了。</think>Apache Shiro支持通过多条过滤器链对不同URL路径进行差异化安全控制。以下是具体配置方法和示例: ### 一、过滤器链配置原理 Shiro通过`filterChainDefinitions`参数定义URL路径与过滤器的映射关系[^3],采用`URL=过滤器列表`的格式,支持多条独立配置。匹配时按照声明顺序执行,第一个匹配成功的规则生效。 ### 二、基础配置示例(INI格式) ```ini [main] authcBasic = org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter [urls] # 管理后台路径需要基础认证+权限验证 /admin/** = authcBasic[POST,PUT,DELETE], roles[admin] # API路径需要JWT认证+方法级权限 /api/** = jwt, perms[api:write] # 静态资源允许匿名访问 /static/** = anon # 默认路径需要会话认证 /** = authc ``` ### 三、Spring Boot配置示例 ```java @Bean public ShiroFilterChainDefinition shiroFilterChain() { DefaultShiroFilterChainDefinition chain = new DefaultShiroFilterChainDefinition(); chain.addPathDefinition("/admin/**", "authcBasic[POST,PUT,DELETE], roles[admin]"); chain.addPathDefinition("/api/**", "jwt, perms[api:write]"); chain.addPathDefinition("/static/**", "anon"); chain.addPathDefinition("/**", "authc"); return chain; } ``` ### 四、关键配置说明 1. **路径匹配顺序**:应按照从具体到宽泛的顺序排列 2. **过滤器组合**: - `authc`:表单认证 - `authcBasic`:HTTP基础认证[^4] - `roles`:角色验证 - `perms`:权限验证 - `anon`:匿名访问 3. **方法限定**:使用`authcBasic[POST,PUT,DELETE]`限制仅特定HTTP方法需要认证[^4] ### 五、注意事项 1. 使用`BasicHttpAuthenticationFilter`时,非指定HTTP方法默认不拦截 2. 自定义过滤器需先注册到SecurityManager 3. 路径匹配遵循Ant风格模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值