具体思路:配置三张表,别离是角色表,权限表和角色权限对应表。后端配置一个全局拦截器,在拦挡每一次申请时,去查表里该用户对应的角色权限是否存在,如果存在就通过,不存在就回绝并提醒。
一. 设计数据库表构造
- 角色表
- 权限表
- 角色权限对应表
二. 配置全局拦截器
AllInterceptor.java
public class AllInterceptor implements HandlerInterceptor { /** * 角色对应权限表的service */ @Autowired private MenuService menuService; /** * 权限表的service */ @Autowired private UrlService urlService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 失去申请地址 String url = request.getRequestURI(); HttpSession session = request.getSession(); String projectName = "/CustomerSystem"; // 去除申请前缀文件名 (能够去也能够不去,看你次要的申请长什么样和权限表里存的地址) url = url.substring(projectName.length(), url.length()); url_info uInfo = this.urlService.selectUrl(url); if(uInfo != null){ menu_info mInfo = new menu_info(); mInfo.setType(Integer.parseInt((String)session.getAttribute("type")) + 1); mInfo.setUrlId(uInfo.getId()); int a = this.menuService.selectMenu(mInfo); // 有该权限间接通过 if(a > 0){ return true; } // 没有该权限就提醒并跳转到登录页面 session.setAttribute("msg", "<script type='text/javascript'>alert('道歉,您尚未有此性能权限!')</script>"); request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response); return false; } // 查不到此地址,间接返回提醒并跳转到登录页面 session.setAttribute("msg", "<script type='text/javascript'>alert('道歉,您尚未有此性能权限!')</script>"); request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response); return false; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView model) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
在springMVC配置文件里申明这个全局拦截器
springmvc-config.xml
<!-- 配置拦截器 --><mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <!-- 配置不被拦挡的门路 --> <mvc:exclude-mapping path="/cus_login.action"/> <mvc:exclude-mapping path="/cus_checklogin.action"/> <mvc:exclude-mapping path="/cus_exit.action"/> <!-- 把拦截器注入到spring容器中 --> <bean class="com.itheima.core.interceptor.CustomerAllInterceptor"></bean> </mvc:interceptor></mvc:interceptors>
至此,权限治理就曾经实现了。
三. 上面是我设计实现的校园选课零碎里的权限治理模块的页面
我的项目的GitHub地址,点击返回
欢送大家返回,给个star。
首页:
登录后的页面
管理员登录后的权限治理页面