继上一篇。
发现shiro,也不是很好用,相对来说是比自己定义的好一点吧。
shiro用注解注入对方法,action进行权限控制时,当用户没有这个权限,后台会报错。这个暂时还没看到相关文章讲过这个。
即便配置异常拦截,也只是将页面跳转到权限不足页面而已,不能阻止异常被抛出。
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="org.apache.shiro.authz.UnauthorizedException">error/noperms</prop>
</props>
</property>
</bean>
而发现配置filterChainDefinitions的时候,
如果使用 role perms 都是必须通过和并级关系,这样无法做到,admin的权限最大。
所以查找了一下。
发现注解有个或级关系的属性,
@RequiresRoles(value={"user1","admin"},logical=Logical.OR)
当role 是user 或 admin 的时候 拥有此方法的权限。
备注:权限注解在 controller上无效,只能对controller的方法进行控制
页面上还可以使用 shiro 标签进行权限控制
<shiro:hasRole name="admin">
<a href="javascript:void(0)">AdminManage</a>
</shiro:hasRole>