系统权限模块设计(ps:有图有真相!)
在百度百科里查到了权限管理系统的定义:
从模型中可以看到权限表引用了菜单管理这张表,扩展这张权限表的目的是为了更灵活的对权限进行管理,而不单单只是围绕菜单树,然后通过权限关联表进行角色权限的维护。
在找百度百科看看权限管理的分类
List<String> roleAccessList = (List<String>) session.getAttribute(sessionKey);String URL = req.getServletPath();if(checkNoFilterType(URL) || checkNoFilterURI(URL) || roleAccessList.contains(URL)) {//如果是免过滤地址或免过滤类型则通过chain.doFilter(request, response);} else {String ajaxTag = req.getHeader("Request-By");//Extresp.setCharacterEncoding("UTF-8");resp.setContentType("text/html;charset=utf-8");PrintWriter out = resp.getWriter();if(ajaxTag == null || !ajaxTag.trim().equalsIgnoreCase("Ext")){//resp.sendRedirect(this.redirectUri);out.print("权限受限!");}else{Map<String, Object> result = new HashMap<String, Object>();result.put("success", false);result.put("noPermission",true);result.put("redirectUri", this.redirectUri);out.print(Json.object2Json(result));}out.flush();out.close();}
前台js控制:
P_roleAccessUris = '<%=session.getAttribute("userRoleAccessList") != null ? session.getAttribute("userRoleAccessList").toString() : ""%>';//可访问权限uris/*** 判断用户是否有uri访问权限* @param url* @return boolean*/function Pfn_enableAccess(url){url = url.substr(P_basePath.length);if(P_roleAccessUris.indexOf(url) != -1){return true;}return false;}// Default headers to pass in every requestExt.Ajax.defaultHeaders = { 'Request-By': 'Ext'//标识ajax请求};// ajax回调函数处理系统退出 Ext.Ajax.on('requestcomplete',checkStatus, this); function checkStatus(conn,response,options){ var json = Ext.decode(response.responseText); if(typeof json == 'object' && !json.success ){if(json.timeout){alert("登入超时,系统将自动跳转到登陆页面,请重新登入!");top.window.location.href = P_basePath + json.redirectUri;return false;}else if(json.noPermission){alert("权限受限!");return false;}} } 

