EPMS System Analysis——AD验证、权限设计
目录
- AD验证
- 权限设计
一、AD(Active Directory)活动目录验证
1.概念
存储用户、计算机和网络资源的信息,并且使资源可以被用户和应用程序访问;它提供了命名、描述、定位、访问、管理和保护这些资源有关信息的一致路径。
2.作用
对网络资源的集中控制;在逻辑结构中安全地存储对象;优化网络流量。
3. AD的逻辑结构
组成节点:域、域树、林、林根域;
域:AD逻辑结构中的核心功能;
域提供的三种功能:对象的管理、边界管理共享资源安全性的方法、对象的复制单元;
林:AD完整实例,其中包括一个或多个树。
4. AD物理结构
节点:域控制器、AD站点
5.AD工作原理
目录服务:基于活动目录实现各种功能
6..NET对于AD的支持
System.DirectoryServices:以托管代码访问AD,包含两个组件类:
- DirectoryEntry类封装AD层次结构中的节点和对象,可以读取和更新对象和节点中的特性。
- DirectorySearcher类对AD层次结构执行查询。LDAP 是系统提供的唯一一种支持搜索的 Active Directory 服务接口 (ADSI) 提供程序,返回 SearchResult 的实例,这些实例包含在 SearchResultCollection 类的实例中。
7.AD验证系统设计
8. 实例代码
1 public partial class Form1 : Form 2 { 3 public Form1() 4 { 5 InitializeComponent(); 6 } 7 private void Form1_Load(object sender, EventArgs e) 8 { 9 Try{ 10 //操作IIS时,DirectoryEntry的Path的格式为: 11 IIS://ComputerName/Service/Website/Directory 12 string path = "LDAP://dc/OU=**,OU=**,DC=**,DC=**"; 13 /* * CN:是对象在所在容器内的通用名称 14 * OU:是包含对象的组织单位。如果对象位于嵌套的组织单位中,则可能具有多个OU值 15 * DC:代表域部分,通常有两个域部分 16 * */ 17 Enumerate(path); 18 treeView1.ExpandAll(); 19 } 20 catch (Exception ex) 21 { 22 throw ex; 23 } 24 } 25 26 protected void Enumerate(string path) 27 { 28 29 using (DirectoryEntry root = new DirectoryEntry(path)) 30 { 31 TreeNode node = new TreeNode(root.Name); 32 treeView1.Nodes.Add(node); 33 EnumChildren(root, node); 34 } 35 } 36 protected void EnumChildren(DirectoryEntry entry,TreeNode treeNode) 37 { 38 if (entry.Children != null) 39 { 40 foreach (DirectoryEntry i in entry.Children) 41 { 42 EnumChildren(i, AddNode(treeNode, i.Name)); 43 } 44 } 45 } 46 protected TreeNode AddNode(TreeNode parent, string text) 47 { 48 TreeNode child = new TreeNode(text); 49 parent.Nodes.Add(child); 50 return child; 51 } 52 }
二、权限设计
1. 常用的权限设计模式
模式一:用户-》角色-》权限
2. 数据库结构
2.1表结构
2.2 说明
Account:账户表
Role:角色表
AccountRole:账户角色关联表
Pentence:权限表
FunctionResource:资源操作表
2.3实例
测试数据:
1 CREATE TABLE dbo.Account 2 ( 3 id char(36) primary key, 4 employee_id char(36), 5 login_name nvarchar(50), 6 password nvarchar(50), 7 isuse int, 8 online int 9 ); 10 11 INSERT INTO dbo.Account 12 SELECT 1001,2001,'admin',123,1,1 13 UNION ALL 14 SELECT 1002,2002,'login_1',123,1,0 15 16 CREATE TABLE dbo.AccountRole 17 ( 18 id char(36) primary key, 19 role_id char(36) references Role(id), 20 account_id char(36) references Account(id) 21 ); 22 23 INSERT INTO dbo.AccountRole 24 SELECT 3001,4001,1001 25 UNION ALL 26 SELECT 3002,4002,1002 27 28 CREATE TABLE dbo.Role 29 ( 30 id char(36) primary key, 31 role_name nvarchar(50), 32 ismax int, 33 descr nvarchar(100) 34 35 ); 36 INSERT INTO dbo.Role 37 SELECT 4001,'a001',1,'abc1' 38 UNION ALL 39 SELECT 4002,'a002',0,'abc2' 40 41 CREATE TABLE dbo.Pentence 42 ( 43 id char(36) primary key, 44 role_id char(36) references Role(id), 45 function_code int references FunctionResource(function_code) 46 ); 47 48 INSERT INTO dbo.Pentence 49 SELECT 5001,4001,001001 50 UNION ALL 51 SELECT 5002,4002,001002 52 53 CREATE TABLE dbo.Pentence 54 ( 55 id char(36) primary key, 56 role_id char(36) references Role(id), 57 function_code int references FunctionResource(function_code) 58 ); 59 60 INSERT INTO dbo.Pentence 61 SELECT 5001,4001,001001 62 UNION ALL 63 SELECT 5002,4002,001001001 64 65 CREATE TABLE dbo.FunctionResource 66 ( 67 function_code int primary key, 68 name nvarchar(50), 69 url nvarchar(50), 70 type int, 71 parent_code int 72 ); 73 74 INSERT INTO dbo.FunctionResource 75 SELECT 001001,'合同管理','',0,'' 76 UNION ALL 77 SELECT 001001001,'设备管理','',0,001001 78 UNION ALL 79 SELECT 001001001001,'基本状态','',1,001001001
示意性代码:
1 select * from Account where login_name='admin' 2 select * from AccountRole where account_id='1001' 3 select * from Role where id='4001' 4 select * from Pentence where role_id='4001'; 5 6 with rights as(select fr.*,1 as level from FunctionResource fr where parent_code='0' 7 union all 8 select fr1.*,(r.level+1) as level from FunctionResource fr1 9 inner join rights r on fr1.parent_code=r.function_code) 10 11 select r.*, 12 case level 13 when 1 then ''+name 14 when 2 then '|- '+name 15 when 3 then '|- |- '+name 16 when 4 then '|- |- |- '+name 17 end as tree from rights r 18 order by function_code
2.4效果图
3. 在控制层写if/else判断条件
用户登录系统后,就根据登录的账号信息找到该用户的角色,将该角色的所有的菜单权限和操作按钮权限加载到列表中,保存到Session,一直到用户退出系统或者session过期。
转载于:https://www.cnblogs.com/YZDONET/archive/2012/09/13/2682920.html
EPMS System Analysis——AD验证、权限设计相关推荐
- 基于shiro的权限设计
shiro介绍 Apache shiro是一个权限控制框架,它将安全认证抽取出来,实现用户身份认证,权限授权,加密,会话管理等功能,是一个通用的安全认证框架,而且还可以用于分布式集群.功能如下 1.验 ...
- 跟我学Springboot开发后端管理系统8:Matrxi-Web权限设计实现
上篇文章讲述了Matrix-web整体实现的权限控制的思路.现在来回顾一下: 首先,用户需要登录,填用户名.密码,后端接收到登录请求,进行用户.密码的校验,校验成功后则根据用户名生成Token,并返回 ...
- 转载:闲话权限设计三层境界
转自: http://www.cnblogs.com/tsoukw/archive/2010/09/27/1836485.html 喜欢金庸的武侠,对他那几部小说也是乐此不疲 拿独孤求败来说,他的剑, ...
- System Analysis and Project Management
Lecture 1 What is a project? What is the difference between project, job and exploration? What is an ...
- 一种简单的直观的高效的权限设计
大部分系统都有权限系统.一般来说,它能管控人员对某个否页面的访问:对某些字段.控件可见或者不可见.对gridview中的数据是否可删除.可添加.可新增等等.大部分人都把权限作为一个子系统独立出来.但是 ...
- SaaS-HRM--第3章-SaaS系统用户权限设计
学习目标: 理解RBAC模型的基本概念及设计思路 了解SAAS-HRM中权限控制的需求及表结构分析 完成组织机构的基本CRUD操作 完成用户管理的基本CRUD操作 完成角色管理的基本CRUD操作 1组 ...
- 浅谈权限设计(来自深空老大)
2019独角兽企业重金招聘Python工程师标准>>> By 深空, 2009-09-13 21:45:07 PHPChina的专家版在谈权限设计,苦于没有权限回帖,特发此博文谈谈简 ...
- 跟我学Springboot开发后端管理系统7:Matrxi-Web权限设计
Matrxi-Web权限设计 对于一个后端系统来说,权限是基础设施,是安全保障.没有权限,系统可能随时面临各种风险,所以权限设计对后端系统来说至关重要.在Javaweb开发中,有很多权限开发的框架,比 ...
- 浅谈OFBiz之权限设计
简介 Apache Open For Business(Apache OFBiz) 是Apache开源的一个经典ERP项目.它提供了一套企业应用,用于集成以及自动化一些企业的"商业流程&qu ...
最新文章
- 使用CEfSharp之旅(1) 加载网络页面
- 有了这个Java项目经历,面大厂稳了!
- D455 如何同时传输视频深度流和惯性单元IMU流?(双管道方法与调用回调方法)
- AWS专家论道之迁移上云的四个大趋势和七个小趋势
- [转]“Ceph浅析”系列之(—)—Ceph概况
- 对Redis配置中bind的探索
- 天翼空间应用商城 App Market体验
- 有道词典java下载电脑版下载手机版下载安装_网易有道词典下载-网易有道词典 安卓版v8.3.4-PC6安卓网...
- NFine.Framework框架去除cookie后门
- 鸿蒙系统图标大小怎么调节,华为手机桌面图标大小怎么调?用华为手机的朋友这些技巧需要了解...
- 提出辞职可以用的五个理由推荐给大家
- vue3-proxy
- linux连接蓝牙设备,Linux 下连接蓝牙设备
- java 几种生成海报的方式
- moses中的数据预处理预处理操作
- 程序员找工作黑名单,避雷针!
- vue使用参数直接取到data数据
- 当P4遇见NAT64,UCloud如何快速从IPv4向IPv6演进?
- Cocoss2d-x开发流程工具化思想与实现
- ai人工智能_对人工智能的追求
热门文章
- python编号/排序/翻转/并行迭代使用场景及作用
- 【IOS自动化解放双手系列一】unity3D导出xcode 工程并配置各种权限
- 网状结构(图)图的存储(邻接矩阵、邻接表)、图的遍历(深度DFS、广度BFS)、图的最短路径
- Python学习:简单的python “hello,world”程序
- Android Update Engine 分析(十七)10 类 InstallOperation 数据的生成和应用
- 决OBS Studio录制的视频为黑屏的问题
- C/C++框架和第三方库
- Chapter 11 应用系统负载分析及磁盘容量预测
- 搭建普罗米修斯Prometheus监控系统
- C++实现OPT最佳页面替换算法,结果简明扼要