一、权限管理的定义
权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源,不多不少。权限管理几乎出现在任何系统里面,只要有用户和密码的系统。本系统是需要进行用户的权限验证。
二、权限管理分类
从控制力度来看,可以将权限管理分为两大类:
1,功能级权限管理;
2,数据级权限管理。
从控制方向来看,也可以将权限管理分为两大类:
1,从系统获取数据,比如查询订单、查询客户资料;
2,向系统提交数据,比如删除订单、修改客户资料。
本系统将使用控制方向的权限进行管理。
三、权限管理技术实现
按照权限管理的力度,逐步介绍权限管理实现技术。
3.1, 功能权限管理技术实现
功能权限管理技术,一般就使用基于角色访问控制技术RBAC(Role Based Access Control)。该技术被广泛运用于各个系统,非常容易掌握。该技术模型如下图示:
权限设置
一般来说,系统提供如下功能:
1,角色管理界面,由用户定义角色,给角色赋权限;
2,用户角色管理界面,由用户给系统用户赋予角色。
3,系统还支持用户定义权限,这样新增功能的时候,可以将需要保护的功能添加到系统。
权限验证
功能级的权限验证逻辑非常简单。查看该当前登录用户的角色是否包含该功能的权限。如果有,则表示有权访问,否则表示无权访问。
对于WEB系统,一般定义一个Filter就可以完成权限验证,无需在各个程序入口进行权限判断。程序伪代码如下:
// 获取访问功能
String url=request.getRequestPath();
// 进行权限验证
User user=request.getSession().get("user");
boolean permit=PrivilegeManager.permit( user, url );
if(permit ) {
chain.doFilter(request, response );
} else {
// 可以转到提示界面
}