【shiro权限管理】5.权限路径配置

前面的文章中对shiro过滤器的配置如下:

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
     <property name="securityManager" ref="securityManager"/>
     <property name="loginUrl" value="/login.jsp"/>
     <property name="successUrl" value="/list.jsp"/>
     <property name="unauthorizedUrl" value="/unauthorized.jsp"/>
     <!--  
     	配置哪些路径资源需要受保护. 
     	以及访问这些页面需要的权限. 
     	1). anon 可以被匿名访问
     	2). authc 必须认证(即登录)后才可能访问的页面. 
     -->
     <property name="filterChainDefinitions">
         <value>
             /login.jsp = anon
             # everything else requires authentication:
             /** = authc
         </value>
     </property>
</bean>

现在对filterChainDefinitions举些例子,并做简单的解释

<property name="filterChainDefinitions">
            <value>
                # some example chain definitions:
                /index.htm = anon
                /logout = logout
                /unauthed = anon
                /console/** = anon
                /css/** = anon
                /js/** = anon
                /lib/** = anon
                /admin/** = authc, roles[admin]
                /docs/** = authc, perms[document:read]
                /** = authc
                # more URL-to-FilterChain definitions here
            </value>
</property>

注:anon,authcBasic,auchc,user是认证过滤器,perms,roles,ssl,rest,port是授权过滤器

各种参数配置详解 

anon:例子/admins/**=anon 没有参数,表示无需认证就能访问 

authc:例如/admins/user/**=authc表示需要认证(登录)才能使用,没有参数 

roles:例子/admins/user/=roles[admin],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,当有多个参数时,例如admins/user/=roles[“admin,guest”],每个参数通过才算通过,相当于hasAllRoles()方法。 

perms:例子/admins/user/=perms[user:add:],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,例如/admins/user/=perms[“user:add:,user:modify:*”],当有多个参数时必须每个参数都通过才通过,想当于isPermitedAll()方法。 

rest:例子/admins/user/=rest[user],根据请求的方法,相当于/admins/user/=perms[user:method] ,其中method为post,get,delete等。 

port:例子/admins/user/**=port[8081],当请求的url的端口不是8081是跳转到schemal://serverName:8081?queryString,其中schmal是协议http或https等,serverName是你访问的host,8081是url配置里port的端口,queryString 

是你访问的url里的?后面的参数。 

authcBasic:例如/admins/user/**=authcBasic没有参数表示httpBasic认证 

ssl:例子/admins/user/**=ssl没有参数,表示安全的url请求,协议为https 

user:例如/admins/user/**=user没有参数表示必须存在用户,当登入操作时不做检查 

url模式匹配

配置的url模式使用Ant风格模式。Ant路径通过通配符支持“?”、“*”、“**”,其中通配符匹配不包括目录分隔符“/”。

对于“?”,其匹配一个字符串。如“/admin?”将匹配“/admin1”,但不匹配“/admin”或“/admin/”。

对于“*”,其匹配零个或多个字符串。如“/admin*”将匹配“/admin”、“/admin123”,但不匹配“/admin/1”。

对于“**”,其匹配路径中的零个或多个路径。如“/admin/**”将匹配“/admin/a”或“/admin/a/b”。

url匹配顺序

url权限采取第一次匹配优先的方式,即从头开始使用第一个匹配的url模式对应的拦截器链。

如下面的配置:

/bb/**=filter1

/bb/aa=filter2

/**=filter3

如果请求的url是“/bb/aa”,则按照声明顺序进行匹配,将使用filter1进行拦截。

相关推荐