目录

  • AD验证
  • 权限设计

一、ADActive 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. 实例代码

View Code

 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实例

测试数据:

View Code

 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

示意性代码:

View Code

 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验证、权限设计相关推荐

  1. 基于shiro的权限设计

    shiro介绍 Apache shiro是一个权限控制框架,它将安全认证抽取出来,实现用户身份认证,权限授权,加密,会话管理等功能,是一个通用的安全认证框架,而且还可以用于分布式集群.功能如下 1.验 ...

  2. 跟我学Springboot开发后端管理系统8:Matrxi-Web权限设计实现

    上篇文章讲述了Matrix-web整体实现的权限控制的思路.现在来回顾一下: 首先,用户需要登录,填用户名.密码,后端接收到登录请求,进行用户.密码的校验,校验成功后则根据用户名生成Token,并返回 ...

  3. 转载:闲话权限设计三层境界

    转自: http://www.cnblogs.com/tsoukw/archive/2010/09/27/1836485.html 喜欢金庸的武侠,对他那几部小说也是乐此不疲 拿独孤求败来说,他的剑, ...

  4. System Analysis and Project Management

    Lecture 1 What is a project? What is the difference between project, job and exploration? What is an ...

  5. 一种简单的直观的高效的权限设计

    大部分系统都有权限系统.一般来说,它能管控人员对某个否页面的访问:对某些字段.控件可见或者不可见.对gridview中的数据是否可删除.可添加.可新增等等.大部分人都把权限作为一个子系统独立出来.但是 ...

  6. SaaS-HRM--第3章-SaaS系统用户权限设计

    学习目标: 理解RBAC模型的基本概念及设计思路 了解SAAS-HRM中权限控制的需求及表结构分析 完成组织机构的基本CRUD操作 完成用户管理的基本CRUD操作 完成角色管理的基本CRUD操作 1组 ...

  7. 浅谈权限设计(来自深空老大)

    2019独角兽企业重金招聘Python工程师标准>>> By 深空, 2009-09-13 21:45:07 PHPChina的专家版在谈权限设计,苦于没有权限回帖,特发此博文谈谈简 ...

  8. 跟我学Springboot开发后端管理系统7:Matrxi-Web权限设计

    Matrxi-Web权限设计 对于一个后端系统来说,权限是基础设施,是安全保障.没有权限,系统可能随时面临各种风险,所以权限设计对后端系统来说至关重要.在Javaweb开发中,有很多权限开发的框架,比 ...

  9. 浅谈OFBiz之权限设计

    简介 Apache Open For Business(Apache OFBiz) 是Apache开源的一个经典ERP项目.它提供了一套企业应用,用于集成以及自动化一些企业的"商业流程&qu ...

最新文章

  1. 使用CEfSharp之旅(1) 加载网络页面
  2. 有了这个Java项目经历,面大厂稳了!
  3. D455 如何同时传输视频深度流和惯性单元IMU流?(双管道方法与调用回调方法)
  4. AWS专家论道之迁移上云的四个大趋势和七个小趋势
  5. [转]“Ceph浅析”系列之(—)—Ceph概况
  6. 对Redis配置中bind的探索
  7. 天翼空间应用商城 App Market体验
  8. 有道词典java下载电脑版下载手机版下载安装_网易有道词典下载-网易有道词典 安卓版v8.3.4-PC6安卓网...
  9. NFine.Framework框架去除cookie后门
  10. 鸿蒙系统图标大小怎么调节,华为手机桌面图标大小怎么调?用华为手机的朋友这些技巧需要了解...
  11. 提出辞职可以用的五个理由推荐给大家
  12. vue3-proxy
  13. linux连接蓝牙设备,Linux 下连接蓝牙设备
  14. java 几种生成海报的方式
  15. moses中的数据预处理预处理操作
  16. 程序员找工作黑名单,避雷针!
  17. vue使用参数直接取到data数据
  18. 当P4遇见NAT64,UCloud如何快速从IPv4向IPv6演进?
  19. Cocoss2d-x开发流程工具化思想与实现
  20. ai人工智能_对人工智能的追求

热门文章

  1. python编号/排序/翻转/并行迭代使用场景及作用
  2. 【IOS自动化解放双手系列一】unity3D导出xcode 工程并配置各种权限
  3. 网状结构(图)图的存储(邻接矩阵、邻接表)、图的遍历(深度DFS、广度BFS)、图的最短路径
  4. Python学习:简单的python “hello,world”程序
  5. Android Update Engine 分析(十七)10 类 InstallOperation 数据的生成和应用
  6. 决OBS Studio录制的视频为黑屏的问题
  7. C/C++框架和第三方库
  8. Chapter 11 应用系统负载分析及磁盘容量预测
  9. 搭建普罗米修斯Prometheus监控系统
  10. C++实现OPT最佳页面替换算法,结果简明扼要