具体思路:配置三张表,别离是角色表,权限表和角色权限对应表。后端配置一个全局拦截器,在拦挡每一次申请时,去查表里该用户对应的角色权限是否存在,如果存在就通过,不存在就回绝并提醒。

一. 设计数据库表构造

  • 角色表

  • 权限表

  • 角色权限对应表

二. 配置全局拦截器

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。

首页:

登录后的页面

管理员登录后的权限治理页面