在上一次的文章中,简单的说明了基于RBAC用户权限控制的菜单显示和表结构的设计,而往往在企业项目中,仅仅控制用户菜单是不够的,而是要控制到每一个按钮,也就是每一个请求。
首先,用户权限校验的基本流程是,当用户登录成功后,将用户对应的权限存放在缓存中,用户每次发起一个请求时,在拦截器里面判断用户是否具有这个权限。
第一步:拦截器的配置
拦截器的配置是在spring-mvc.xml这个配置文件中的。
代码如下:
<!--配置拦截器, 多个拦截器,顺序执行 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 匹配的是url路径, 如果不配置或/**,将拦截所有的Controller-->
<mvc:mapping path="/**" />
<!-- 需排除拦截的地址 -->
<mvc:exclude-mapping path="/login.ding.jsp"/>
<mvc:exclude-mapping path="/login.pcding.jsp"/>
<mvc:exclude-mapping path="/login.index.jsp"/>
<mvc:exclude-mapping path="/user/toIndex"/>
<mvc:exclude-mapping path="/user/toLogin"/>
<mvc:exclude-mapping path="/www/login.jsp"/>
<bean class="com.siweisoft.interceptor.UserInfoLoginInterceptor"></bean>
</mvc:interceptor>
<!--<mvc:interceptor>-->
<!--<!– 匹配的是url路径, 如果不配置或/**,将拦截所有的Controller–>-->
<!--<mvc:mapping path="/**" />-->
<!--<bean class="com.siweisoft.interceptor.LogInterceptor"></bean>-->
<!--</mvc:interceptor>-->
<!-- 当设置多个拦截器时,先按顺序调用preHandle方法,然后逆序调用每个拦截器的postHandle和afterCompletion方法 -->
<mvc:interceptor>
<!-- 匹配的是url路径, 如果不配置或/**,将拦截所有的Controller-->
<mvc:mapping path=