首先简单介绍一下shiro
shiro是Apache开源项目的一个安全开源框架。提供了认证、授权、加密和会话管理功能,可为任何应用提供安全保障 - 从命令行应用、移动应用到大型网络及企业应用。
这篇文章介绍一下在对roles进行判断,一般验证一个角色,想添加多个角色时,会报一些重定向循环之类的错误。
首先要重写一个RolesAuthorizationFilter我们命名为AnyRolesAuthorizationFilter
代码如下:
AnyRolesAuthorizationFilter.java
public class AnyRolesAuthorizationFilter extends RolesAuthorizationFilter {
@Override
public boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue)
throws IOException {
final Subject subject = getSubject(request, response);
final String[] rolesArray = (String[]) mappedValue;
if (rolesArray == null || rolesArray.length == 0) {
// no roles specified, so nothing to check - allow access.
return true;
}
for (String roleName : rolesArray) {
if (subject.hasRole(roleName)) {
return true;
}
}
return false;
}
}
然后加入到你的xml文件中:
<property name="filters">
<map>
<entry key="authc" value-ref="formAuthenticationFilter"/>
<entry key="roles" value-ref="anyRolesAuthorizationFilter"/>
</map>
</property>
<bean id="formAuthenticationFilter" class="com.thon.security.CaptchaFormAuthenticationFilter"/>
<bean id="anyRolesAuthorizationFilter" class="com.thon.security.AnyRolesAuthorizationFilter"/>
下面就是关键的多角色的配置:
在你的xml文件中配置如下:
<property name="filterChainDefinitions">
<value>
/index = roles[user,institution,charitarian,admin]
/** = anon
</value>
</property>
ok。大功告成。
这里只是记录一下平时学习笔记。
详细的教程,如果有需要后面会补上。
转载请标明出处:http://blog.csdn.net/zemochen/article/details/16891965