权限设计功能权限数据权限.doc

上传人:jian****018 文档编号:8462651 上传时间:2020-03-29 格式:DOC 页数:9 大小:107.67KB
返回 下载 相关 举报
权限设计功能权限数据权限.doc_第1页
第1页 / 共9页
权限设计功能权限数据权限.doc_第2页
第2页 / 共9页
权限设计功能权限数据权限.doc_第3页
第3页 / 共9页
点击查看更多>>
资源描述
1 网络管理系统 权限管理 权限描述 1 为什么要有权 限管理 1 本项目中的权限管理 1 权限设计 2 名词解释 2 权限系统的核心由以下三部分构成 创造权限 分配权限 使用权限 2 数据库结构设计 3 权限执行步骤 3 MSDN 说明 ASP NET 母版页和内容页中的事件 3 项目步骤说明 4 权限代码实现 4 第一步 检测登陆和合法 Url BaseMasterPage 4 第二步 加载资源和功能菜单加载 MasterPage 6 第三步 将资源转化为属性 和错误记录 BasePage 7 第四步 第五步 页面初始化数据 进行绑定 资源管理 EditNodeInfo aspx 为例 Page 8 2 权限描述 为什么要有权限管理 权限管理是 Web 应用项目中比较关键的环节 因为浏览器是每一台计算机都已具备的 如 果不建立权限管理系统 那么一个 非法用户 可以轻而易举通过浏览器访问 Web 应用项目 中的所有功能 资源 因此需要权限管理系统进行权限检测 让经过授权的用户可以正常 合法的使用已授权的功能 资源 而对那些未授权的非法用户拒之门外 本项目中的权限管理 本项目中的权限管理总的可以分为功能管理和资源管理 在这里我定义了以下关系 权限 功能 资源 在后续出现的权限均指代的是功能 资源 1 功能管理中的功能体现到本系统中就是对应一个网页 url 或网页中的一个按 钮 2 资源管理中的资源就是本系统中需要用权限约束的资源对象 包括链路 节点 设备 事务等信息 权限设计 名词解释 a SystemUsers 系统用户 使用功能 资源的平台用户 b Groups 用户组 功能 资源分配的单位与载体 权限不考虑分配给特定的用户而 给组 c Roles 角色 一定数量的功能的集合 功能分配的单位与载体 目的是隔离系统 用户 SystemUsers 与权限功能 FunUrl 的逻辑关系 权限系统的核心由以下三部分构成 创造权限 分配权限 使用权限 1 创建权限 分两步 1 创建功能 2 创建资源 a 创建功能 Creator 创造 功能 Creator 在设计和实现系统时会分析 一个子系 统或称为模块 应该有哪些功能 然后将这些功能注册到相应系统模块中 这里 实现就是对 Url 分别注册到 FunUrl 中 b 创建资源 Creator 创造 资源 Creator 在设计和实现系统时会分析系统中需要被 约束的资源有哪些 然后针对每一种资源 都建立一个组 资源关系表 2 分配权限 分两步 1 功能分配 2 资源分配 a 功能分配 Administrator 创建角色 创建用户组 给用户组分配用户 将用户组 与角色关联 然后 Administrator 将 功能与角色建立关联关系 这样就可以达到功 3 能分配 这些操作都由 Administrator 来完成的 b 资源分配 Administrator 利用组 资源关系表 然后将组和各种资源分别建立关联 关系 这样就可以达到资源分配 3 使用权限 SystemUsers 使用 Administrator 分配给的权限去使用各个子系统 数据库结构设计 组 角 色 关 系 角 色 系 统 用 户 组 资 源 关 系 表1 节 点 资 源 2 设 备 资 源3 链 路 资 源 4 事 务 资 源 组 功 能 Url 角 色 功 能 关 系各 种 资 源 RolesRoleId RoleDesritionRoleAddTime RemarkDeleteDate Flag intnvarchar 200 datetimentext datetimeint RoleFunid RoleIdfunid remarkCreateDate DeleteDateFlag intint intnvarchar Max datetimedatetime int GURelationGURelationId UserIdGroupId RemarkCreateDate DeleteDateFlag intint intnvarchar Max datetimedatetime int GTRelationGTRelationId TransTypeIdGroupId RemarkCreateDate DeleteDateFlag intint intvarchar Max datetimedatetime int GRRelationGRRelationId GroupIdRoleId RemarkCreateDate DeleteDateFlag intint intnvarchar Max datetimedatetime int GroupsGroupId GroupDesritionGroupAddTime RemarkDeleteDate Flag intnvarchar 200 datetimentext datetimeint GNRelationGNRelationId GroupIdnodeId remarkCreateDate DeleteDateFlag intint intnvarchar Max datetimedatetime int GLRelationGLRelationId LinkIdGroupId RemarkCreateDate DeleteDateFlag intint intnvarchar Max datetimedatetime int GERelationGERelationId EquipmentIdGroupId RemarkCreateDate DeleteDateFlag intint intnvarchar Max datetimedatetime int FunUrlfunid urlurlName paranetFunIddisplay remarkFlag CreateDateDeleteDate intvarchar 200 nvarchar 100 int intnvarchar Max intdatetime datetime UsersUserId UserNameUserPwd UserAddTimeRemark RoleIdNodeId CreateDateDeleteDate Flag intvarchar 50 varchar 50 datetime ntextint intdatetime datetimeint 权限执行步骤 MSDN 说明 ASP NET 母版页和内容页中的事件 母版页和内容页都可以包含控件的事件处理程序 对于控件而言 事件是在本地处理的 即内容页中的控 件在内容页中引发事件 母版页中的控件在母版页中引发事件 控件事件不会从内容页发送到母版页 同 样 也不能在内容页中处理来自母版页控件的事件 在某些情况下 内容页和母版页中会引发相同的事件 例如 两者都引发 Init 和 Load 事件 引发事件 的一般规则是初始化事件从最里面的控件向最外面的控件引发 所有其他事件则从最外面的控件向最里面 的控件引发 请记住 母版页会合并到内容页中并被视为内容页中的一个控件 这一点十分有用 下面是母版页与内容页合并后事件的发生顺序 1 母版页控件 Init 事件 4 2 内容控件 Init 事件 3 母版页 Init 事件 4 内容页 Init 事件 5 内容页 Load 事件 6 母版页 Load 事件 7 内容控件 Load 事件 8 内容页 PreRender 事件 9 母版页 PreRender 事件 10 母版页控件 PreRender 事件 11 内容控件 PreRender 事件 母版页和内容页中的事件顺序对于页面开发人员并不重要 但是 如果您创建的事件处理程序取决于某些 事件的可用性 那么您将发现 了解母版页和内容页中的事件顺序很有帮助 项目步骤说明 1 BaseMasterPage init 一级验证 登陆 功能 url 2 MasterPage init 二级验证 功能加载 数据加载 3 BasePage init 将加载的数据重新整理为属性 错误日志记录 4 Page init 页面中的初始化 5 Page Load 说明 页面开始执行时 1 先调用 MasterPage Init 而 MasterPage Init 在调用 BaseMasterPage Init 2 调用 Page Init 而 Page Init 在调用 BasePage Init 3 page load 这样就形成了上面的五步的验证顺序 权限代码实现 第一步 检测登陆和合法 Url BaseMasterPage protected void validate String root ResolveUrl root root Substring 0 root Length 1 获得网站主目录 if object Equals null Session SessionKeys UserId 登陆检测 5 stopCache Response Write alert 对不起 你没有登录系统或登录超时 请重新登录 top location href Login aspx else 功能检测 string url Request AppRelativeCurrentExecutionFilePath TrimStart IList funList FunctionAgent GetFunIdByUrl url if funList Count 0 检测到功能 Url 不存在 给予提示 Response Write alert 系统中没有添加此页面 top location href root Session SessionKeys CurrentUrl ToString Response End else bool status false foreach FunurlInfo f in funList IList RolesId Session SessionKeys RolesId as IList 获得角色 if RolesId null 检测是否有访问的权限 status FunctionAgent EqualByRoleIdAndFunId RolesId f Funid ToString if status break 如果存在就进入访问 if status top location href root Session SessionKeys CurrentUrl ToString else if Session SessionKeys CurrentUrl null Response Redirect Login aspx else Session SessionKeys CurrentUrl url 将当前页面记录下来 6 第二步 加载资源和功能菜单加载 MasterPage 功能菜单加载 其中TreeControl为用户控件 private void BindTree DataSet treeDataSet null IList roleId Session SessionKeys RolesId as IList 获得角色 if roleId null if object Equals Session MoudleName null Session MoudleName FunctionAgent Get2MenuFunList roleId FunId ToString treeDataSet Session MoudleName as DataSet if treeDataSet null addNodes tv2Menu Nodes treeDataSet FunId private void addNodes TreeNodeCollection collection DataSet treeDataSet int parentNodeID DataRow rows treeDataSet Tables menuDataTable Select paranetFunId parentNodeID 查找当前结点的所有子结点 foreach DataRow row in rows 新建一个临时结点 TreeNode node new TreeNode node Value row funId ToString node Text row urlName ToString node NavigateUrl row url ToString string pid row url ToString node Expanded true 默认为展开 递归 加入当前结点的子结点 addNodes node ChildNodes treeDataSet int Parse row funId ToString collection Add node 加入到结点集合中 7 加载资源 protected override void OnInit EventArgs e base OnInit e if object Equals Session SessionKeys NodesId null IList groupsId Session SessionKeys GroupsId as IList if groupsId null Session SessionKeys NodesId ResourceAgent GetNodeIdsByGroupIds groupsId 初始化节点资源 Session SessionKeys LinksId ResourceAgent GetLinkIdsByGroupIds groupsId 初始化链路资源 Session SessionKeys EquipmentsId ResourceAgent GetEquipmentIdsByGroupIds groupsId 初始化设备资源 Session SessionKeys PortsId ResourceAgent GetPortIdsByGroupIds groupsId 初始化端口资源 第三步 将资源转化为属性 和错误记录 BasePage protected override void OnInit EventArgs e UserId GetFromSession SessionKeys UserId as string NodesId GetFromSession SessionKeys NodesId as IList LinksId GetFromSession SessionKeys LinksId as IList EquipmentsId GetFromSession SessionKeys EquipmentsId as IList PortsId GetFromSession SessionKeys PortsId as IList TransTypeIds GetFromSession SessionKeys TransTypeIds as IList PageName Request RawUrl UserIp Request UserHostAddress ToString base OnInit e protected virtual void ShowMessage DcException dex 错误处理 dex UserId UserId dex PageName PageName dex UserIp UserIp 8 if string IsNullOrEmpty dex Msg dex Msg dex Message if dex ErrorType MessageType Warning ShowMessage dex Msg else if dex Msg Equals 正在中止线程 dex Msg Equals Thread was being aborted return Log Error dex ToString 记录错误信息 迁移到错误页面 string errPageUrl ConfigurationManager AppSettings ErrorPageUrl Dictionary dictError new Dictionary dictError Add ErrorMsg dex Msg dictError Add PageName PageName SaveToSession SessionKeys ExceptionInfo dictError Response Redirect errPageUrl 第四步 第五步 页面初始化数据 进行绑定 资源管理 EditNodeInfo aspx 为例 Page protected void Page Load object sender EventArgs e if IsPostBack try IList nodeNameList EquipmentLevelAgent GetNode NodesId NodesId为 BasePage中的节点资源 NodeDropDownList DataSource nodeNameList NodeDropDownList DataTextField Name NodeDropDownList DataValueField Id NodeDropDownList DataBind 9 catch Exception ex lblMessage Text 数据库异常 请稍候再试 ex Message
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑环境 > 建筑工程


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!