Shiro是基于用户、角色、权限认证的安全框架。使用Shiro对Web项目进行权限管理,由Shiro的过滤器,对请求是否允许匿名、是否有Roles角色,是否有Permissions权限来进行拦截。
当使用@RequiresPermissions(),@RequiresRoles()注解方式进行权限控制,该方式没有权限或者没有角色时不会自动跳转到没有权限的页面,而是直接把异常抛到页面了,所以我们要配置一个全局的异常处理。
由于使用的是SSM框架,因此在spring-mvc.xml配置文件中,进行如下配置,配置全局异常捕获,当Shiro框架抛出UnauthorizedException异常时,跳转到403权限不足提示页面。
<!-- shiro全局异常处理 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="org.apache.shiro.authz.UnauthorizedException">redirect:/403.jsp</prop>
</props>
</property>
</bean>