设计方案
- 通过LDAP进行用户登录验证,并读取用户域中所属角色。
- 通过用户角色与权限的关联表,判断用户是否可以访问某个操作页面,如果不可以操作,提示用户没有相关权限,提供返回入口。
- 记录用户所有的安全日志,操作日志(包括,增加,修改,删除,查询)
功能
- 角色-功能-权限管理界面
- 功能列表管理
- 功能模块管理
- 事件日志管理
数据库backend_authorize
- 功能表(function_list):功能ID, 功能名称, 功能介绍,上级功能ID, 功能网址,是否可用
- 权限表(permission):权限ID,权限名称
- 角色权限表(role_authorized): 角色权限ID,角色名称,用户职位,功能id,权限id
- 事件日志表(event_log):ID, 用户名,客户端IP, 事件类型, 功能名称, 模块名称, 详细描述, 操作时间
场景
* 验证逻辑.jpg:备注:用户的职位存储于域用户的描述栏中,但由于目前内网域环境中,用户对应的描述为空,所以暂时不进行用户的描述判断,即用户所拥有的角色可以访问页面,即通过权限的验证。
数据规则
function_list
fucntion_list_id
自增长,主键
name
功能名称
description
功能描述
parent_id
父功能编号,默认值为0,即基本功能
url
功能网址,存储规则:Request.Url.AbsolutePath的值
is_valid
改功能是否可用,默认值为0,值为1时为可用
permission
permission_id
自增长,主键
name
权限名称,即(完全控制,只读)
role_authorized
role_authorized_id
自增长,主键
role_name
用户角色,存储规则:存为域中的group名
user_description
用户的职位,存储规则:存为域中user的description。若用户中description有多个职位(leader,employee...),在本字段中只插入一个职位,分多条记录存储
function_id
授权的功能id
permission_id
授权用户拥有的访问权限,(完全控制,只读(后期))
应用
- 新增功能
- 在数据表function_list中根据相关的字段数据规则添加
- 为功能分配可访问角色信息
- 在表role_authorized中 根据相关字段数据规则添加
- web应用
- 开发完功能页面后,如须添加访问控制,直接拖拽 用户权限验证控件(项目中\BackOfficeWeb\windowsAuthorized\WebUserControl.ascx到页面中既可,无需其他代码
Terry Dong