在百度百科里查到了权限管理系统的定义:
引用
权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源,不多不少。权限管理几乎出现在任何系统里面,只要有用户和密码的系统。
任何一个系统都有对应的权限管理模块,比较粗糙的系统是在开发的时候就定义了哪些类型的用户拥有某些权限,在开发过程中就把权限给定死了;有的则是通过模糊匹配url来进行权限的控制,但是这些日后维护起来会比较麻烦,可能还有其他很多种方式来进行权限的管理,但是不管通过何种方式,其目的都是为了能够安全、灵活、方便的操作,而且还不能影响系统性能。
以下是我自己开发的后台管理系统的权限模块,分享一下我设计的权限模块的开发思路:
后台管理系统是基于Spring + struts2.0 + hibernate + Ext 3.2.1架构开发的,因为前台主要是以Ext为主,所以权限模块也是在围绕Ext树进行设计的。使用Ext开发过的同学都知道Ext.tree.TreePanel的节点是由Ext.tree.TreeNode定义的,其中Ext.tree.TreeNode中有个href属性,接下来的权限控制就是围绕这个href进行控制的。
先来看看数据模型:
从模型中可以看到权限表引用了菜单管理这张表,扩展这张权限表的目的是为了更灵活的对权限进行管理,而不单单只是围绕菜单树,然后通过权限关联表进行角色权限的维护。
在找百度百科看看权限管理的分类
引用
权限管理分类
从控制力度来看,可以将权限管理分为两大类:
1,功能级权限管理;
2,数据级权限管理。
从控制方向来看,也可以将权限管理分为两大类:
1,从系统获取数据,比如查询订单、查询客户资料;
2,向系统提交数据,比如删除订单、修改客户资料。
接下来进入权限模块的开发阶段,系统是根据角色进行权限控制的,在用户登入系统的时候,获取用户的角色信息,然后获取角色的权限信息也就是URI列表保存在session中(ps:权限信息不一定保存在session中,也可以借助第三方存储,比如:memcache),通过过滤器来进行访问控制(判断请求的URI是否在列表当中)。当然前台js也要保存这些URI,这样就可以同时控制界面元素是否展现了。
过滤器控制:
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");//Ext
resp.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 request
Ext.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;
}
}
}
最后贴些图上来看看:
权限管理模块:
接下来看下一普通用户的权限信息及登入界面:
普通用户权限信息(选中为已分配权限):
普通用户登入界面:
补充说明:
有些同学可能没看明白,认为权限粒度太粗,这里我特别说明一下:控制不当单只是用户入口(菜单)的控制,也包括了操作控制(即包含了权限过滤器指定下的所有URL)。完全可以控制到每一个操作。
- 大小: 18.7 KB
- 大小: 37.6 KB
- 大小: 30.7 KB
- 大小: 22.3 KB
分享到:
相关推荐
产品经理小程序后台管理系统:权限模块解析.docx产品经理小程序后台管理系统:权限模块解析.docx产品经理小程序后台管理系统:权限模块解析.docx产品经理小程序后台管理系统:权限模块解析.docx产品经理小程序后台...
图书销售管理系统数据库设计 数据库...数 管理模块(M6) 用户管理模块(M1) 图图书销售管理系统主要功能模块图 系统各个模块功能分配如下: (1)用户管理模块:系统用户根据权限进行系统登录并对相关用户信息进行管理;
产品经理小程序后台管理系统:权限模块解析.pdf产品经理小程序后台管理系统:权限模块解析.pdf产品经理小程序后台管理系统:权限模块解析.pdf产品经理小程序后台管理系统:权限模块解析.pdf产品经理小程序后台管理...
学生信息管理系统 教师权限模块 学生权限模块 学生权限模块含有: 1 .增加 2 .显示 3.追加 4.查找 学生信息功能 教师权限模块含有: 1.增加 2.显示 3.追加 4.查找 5 .修改 6.删除 学生信息功能 用到的主要知识:...
QT文件云服务系统的权限管理模块设计
为了统一WEB系统中的安全权限模块,以满足不同系统用户的需求并将该模块部分设计成统一的、稳定的、标准的、功能完善的后台配置权限管理工具,降低多个软件项目及多个项目组的开发成本、维护成本、项目实施成本,...
基于QT的地下水位监测系统权限管理模块设计
一套完整的系统权限管理模块,可用于进行系统用户对页面的权限访问设置
花了一天时间研究一篇网上关于OA系统权限设计的文档,按照文档自己手动创建了数据库,附件包括文档跟数据库,有想要了解的同学可以下载!tb_User:用户信息基本表; tb_Department:部门表; tb_Company:公司表; ...
毕业设计论文-教育报表管理系统权限管理模块的实现.zip
主要功能有:权限管理、角色管理、部门管理、用户管理、公司管理、模块管理、系统设置。适用 OA、财务、人力等办公软件系统 的二次开发,以关键字(Key)的方式来定义系统的权限,使系统权限分配更加贴合企业需求。...
最详细的,结构合理的,易扩展的,用户权限管理模块设计教程。
功能模块报名系统:系统支持注册报名,自主查询,打印入学通知,缴费提示报名管理:批量导出,录取控制,缴费控制,打印详细,多模块查询管理权限:多权限,多任务,支持多分配模块,有效管理细节分配功能系统后台...
本系统将提供一系列的功能模块,包括:产品信息管理、仓库管理、订单管理、用户权限管理等。 ## 产品信息管理 产品信息管理模块将提供以下功能: - 添加产品信息:可以通过输入产品名称、规格、单价、供应商等...
本文设计的系统管理功能模块采用了多用户多角色管理机制,确保不同的用户登录系统后能够操作属于自己权限范围内的功能。系统功能管理模块主要由用户管理子模块、角色管理子模块、角色设置管理子模块、权限管理子模块...
简单权限模块源码 程序介绍: 简单权限模块(目前包括可换样式,自定义显示桌面项,菜单查看功能)程序开发中功能尚未完成 本人在业务时间开发了这套权限管理系统,用于今后开发其他项目时的后台支持,功能全面界面...
多层结构会员管理系统,主要是实现会员权限及会员管理功能,内置服务器探针,系统采用多层结构开发。功能模块有:目录管理 权限管理 角色管理 系统信息 系统设置 用户管理。
系统登录模块:读者和图书管理员都必须登录才能进入系统,用户登录时在后台判断用户的权限类型,分为读者(即学生)和图书管理员 图书管理模块:可以对图书进行添加,删除、修改图书信息、查询、查看等一系列的操作...
智能巡检系统中权限管理模块的设计与实现,李震,袁超伟,根据智能巡检系统的实际需求,为了保证系统的安全和管理的效率,本文通过对基于角色的访问控制(RBAC)模型的深入分析和研究,提��