我的目标就是,权限想定义什么权限就定义什么权限,想搞几个权限就搞几个
权限,只要一行代码就可以在程序里准确判断,用最少的参数,用最最简单的
方法,通用程序判断程序运行得铜墙铁壁一样稳定,这就是我的追求。
废话少说我主要讲解的7个方向为:
1。操作权限,按钮级权限
2。角色的判断,用户是否属于某个角色的判断
3。拒绝权限,反正常思维的权限
4。单元格权限,脑筋急转弯的权限处理方式
5。数据列权限,字段列级权限
6。数据集过滤权限,数据行级过滤权限
7。页面级权限,模块菜单权限处理
试验步骤如下:
(一)我通过疯狂.NET通用权限后台管理,给用户 吉日嘎拉,配置操作权限。
(2)给用户 吉日嘎拉,配置如下页面中所选中的操作权限。
(3)把用户 吉日嘎拉,归属于 “咨询顾问”这个角色,当然也可以用英文命名的,为了简单我就用中文命名吧。
(4)我创建B\S项目,在 B\S 项目里引用我的通用权限的类库,劳动成果重复利用,不用每次都写了,
我的代码又可以在B、S项目里用,用可以在C\S项目里用,还可以支持多种数据库,这就是我骄傲的牛B之处。
(5)我在B\S项目,编写的代码效果。
(6)我在B\S项目,运行程序后的效果,这里有2排按钮,运行的结果与我们设置的效果是完全符合的。
(7)我在B\S项目,中写的源码如下,供您参考:
当然你也可以把 private void GetPermission() 函数进行以下优化,搞个循环遍历啥的,
能自动绑定权限状态,那就彻底全自动绑定操作权限了,不用每个人都自己写对应的权限
判断了,我不喜欢那么万能的东西,还是喜欢想怎么控制就怎么控制。
下载相应的数据库点这里: /Files/jirigala/DotNet.Common_DB.rar
下载相应的演示程序源码,请堤点这里: /Files/jirigala/JiriSoft.Permission.rar
导读:
通过命名空间的细微差别,很直白的讲个人的那么点儿小算盘、个人的小利益与公司的大利益
疯狂.NET架构通用权限后台管理工具演示版2.0下载
通用权限实现的核心设计思想
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 如何控制用户显示的菜单权限
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 在页面中的调用权限讲解
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 数据集权限的调用权限讲解
标准权限模型RBAC与实际日常开发工作结合后,我对RBAC模型的改进优化研究成果分享
权限,只要一行代码就可以在程序里准确判断,用最少的参数,用最最简单的
方法,通用程序判断程序运行得铜墙铁壁一样稳定,这就是我的追求。
废话少说我主要讲解的7个方向为:
1。操作权限,按钮级权限
2。角色的判断,用户是否属于某个角色的判断
3。拒绝权限,反正常思维的权限
4。单元格权限,脑筋急转弯的权限处理方式
5。数据列权限,字段列级权限
6。数据集过滤权限,数据行级过滤权限
7。页面级权限,模块菜单权限处理
试验步骤如下:
(一)我通过疯狂.NET通用权限后台管理,给用户 吉日嘎拉,配置操作权限。
(2)给用户 吉日嘎拉,配置如下页面中所选中的操作权限。
(3)把用户 吉日嘎拉,归属于 “咨询顾问”这个角色,当然也可以用英文命名的,为了简单我就用中文命名吧。
(4)我创建B\S项目,在 B\S 项目里引用我的通用权限的类库,劳动成果重复利用,不用每次都写了,
我的代码又可以在B、S项目里用,用可以在C\S项目里用,还可以支持多种数据库,这就是我骄傲的牛B之处。
(5)我在B\S项目,编写的代码效果。
(6)我在B\S项目,运行程序后的效果,这里有2排按钮,运行的结果与我们设置的效果是完全符合的。
(7)我在B\S项目,中写的源码如下,供您参考:
1
//
------------------------------------------------------------
2 // All Rights Reserved , Copyright (C) 2009 , Jirisoft , Ltd.
3 // ------------------------------------------------------------
4
5 using System;
6 using System.Collections.Generic;
7 using System.Web;
8 using System.Web.UI;
9 using System.Web.UI.WebControls;
10
11 namespace JiriSoft.Permission
12 {
13 using DotNet.Common;
14 using DotNet.Common.Utilities;
15 using DotNet.Common.DbUtilities;
16 using DotNet.Common.Model;
17 using DotNet.Common.Business;
18 using DotNet.Common.Service;
19
20 /// <remarks>
21 /// _Default
22 ///
23 /// 修改纪录
24 ///
25 /// 版本:1.0 2009.09.06 JiRiGaLa 创建。
26 ///
27 /// 版本:1.0
28 /// <author>
29 /// <name> JiRiGaLa </name>
30 /// <date> 2009.09.06 </date>
31 /// </author>
32 /// </remarks>
33 public partial class _Default : BasePage
34 {
35 /// <summary>
36 /// 用户的登录操作模拟
37 /// </summary>
38 private void UserLogin()
39 {
40 this .Login( " jirigala " , String.Empty);
41 }
42
43 /// <summary>
44 /// 测试数据连接
45 /// </summary>
46 private void CheckDbConnection()
47 {
48 try
49 {
50 // 打开数据库
51 this .DbHelper.Open();
52 // 把数据库里的密码都设置为空
53 String sqlQuery = " UPDATE " + BaseUserTable.TableName + " SET " + BaseUserTable.FieldUserPassword + " = NULL " ;
54 // 执行数据库更新语句
55 this .DbHelper.ExecuteNonQuery(sqlQuery);
56 // 事务开始
57 this .DbHelper.BeginTransaction();
58 // 事务递交
59 this .DbHelper.CommitTransaction();
60 }
61 catch
62 {
63 // 事务回滚
64 this .DbHelper.RollbackTransaction();
65 }
66 finally
67 {
68 // 关闭数据库连接
69 this .DbHelper.Close();
70 }
71 }
72
73 /// <summary>
74 /// 显示当前用户的信息
75 /// </summary>
76 private void ShowCurrentUserInfo()
77 {
78 this .lblUserInfo.Text = " 用户的主键: " + this .UserInfo.ID + " <br> "
79 + " 用户名: " + this .UserInfo.Username + " <br> "
80 + " 姓名: " + this .UserInfo.Realname + " <br> "
81 + " 用户的公司主键: " + this .UserInfo.CompanyID + " <br> "
82 + " 用户的公司名称: " + this .UserInfo.CompanyFullName + " <br> "
83 + " 用户的部门主键: " + this .UserInfo.DepartmentID + " <br> "
84 + " 用户的部门名称: " + this .UserInfo.DepartmentFullName + " <br> "
85 + " 用户的工作组主键: " + this .UserInfo.WorkgroupID + " <br> "
86 + " 用户的工作组名称: " + this .UserInfo.WorkgroupFullName + " <br> " ;
87
88 }
89
90 /// <summary>
91 /// 获得用户的权限
92 /// </summary>
93 private void GetPermission()
94 {
95 this .DbHelper.Open();
96
97 // 用户的操作权限
98 this .btnUserAdd.Enabled = this .IsAuthorized( " User.Add " );
99 this .btnUserDelete.Enabled = this .IsAuthorized( " User.Delete " );
100 this .btnUserExport.Enabled = this .IsAuthorized( " User.Export " );
101 this .btnUserImport.Enabled = this .IsAuthorized( " User.Import " );
102 this .btnUserPrint.Enabled = this .IsAuthorized( " User.Print " );
103 this .btnUserUpdate.Enabled = this .IsAuthorized( " User.Update " );
104 // 角色的操作权限
105 this .btnRoleAdd.Enabled = this .IsAuthorized( " Role.Add " );
106 this .btnRoleDelete.Enabled = this .IsAuthorized( " Role.Delete " );
107 this .btnRoleExport.Enabled = this .IsAuthorized( " Role.Export " );
108 this .btnRoleImport.Enabled = this .IsAuthorized( " Role.Import " );
109 this .btnRolePrint.Enabled = this .IsAuthorized( " Role.Print " );
110 this .btnRoleUpdate.Enabled = this .IsAuthorized( " Role.Update " );
111
112 this .DbHelper.Close();
113 }
114
115 protected void Page_Load( object sender, EventArgs e)
116 {
117 if ( ! Page.IsPostBack)
118 {
119 // 测试数据连接
120 this .CheckDbConnection();
121 // 用户的登录操作模拟
122 this .UserLogin();
123 // 显示当前用户的信息
124 this .ShowCurrentUserInfo();
125 // 获得用户的权限
126 this .GetPermission();
127 }
128 }
129 }
130 }
131
2 // All Rights Reserved , Copyright (C) 2009 , Jirisoft , Ltd.
3 // ------------------------------------------------------------
4
5 using System;
6 using System.Collections.Generic;
7 using System.Web;
8 using System.Web.UI;
9 using System.Web.UI.WebControls;
10
11 namespace JiriSoft.Permission
12 {
13 using DotNet.Common;
14 using DotNet.Common.Utilities;
15 using DotNet.Common.DbUtilities;
16 using DotNet.Common.Model;
17 using DotNet.Common.Business;
18 using DotNet.Common.Service;
19
20 /// <remarks>
21 /// _Default
22 ///
23 /// 修改纪录
24 ///
25 /// 版本:1.0 2009.09.06 JiRiGaLa 创建。
26 ///
27 /// 版本:1.0
28 /// <author>
29 /// <name> JiRiGaLa </name>
30 /// <date> 2009.09.06 </date>
31 /// </author>
32 /// </remarks>
33 public partial class _Default : BasePage
34 {
35 /// <summary>
36 /// 用户的登录操作模拟
37 /// </summary>
38 private void UserLogin()
39 {
40 this .Login( " jirigala " , String.Empty);
41 }
42
43 /// <summary>
44 /// 测试数据连接
45 /// </summary>
46 private void CheckDbConnection()
47 {
48 try
49 {
50 // 打开数据库
51 this .DbHelper.Open();
52 // 把数据库里的密码都设置为空
53 String sqlQuery = " UPDATE " + BaseUserTable.TableName + " SET " + BaseUserTable.FieldUserPassword + " = NULL " ;
54 // 执行数据库更新语句
55 this .DbHelper.ExecuteNonQuery(sqlQuery);
56 // 事务开始
57 this .DbHelper.BeginTransaction();
58 // 事务递交
59 this .DbHelper.CommitTransaction();
60 }
61 catch
62 {
63 // 事务回滚
64 this .DbHelper.RollbackTransaction();
65 }
66 finally
67 {
68 // 关闭数据库连接
69 this .DbHelper.Close();
70 }
71 }
72
73 /// <summary>
74 /// 显示当前用户的信息
75 /// </summary>
76 private void ShowCurrentUserInfo()
77 {
78 this .lblUserInfo.Text = " 用户的主键: " + this .UserInfo.ID + " <br> "
79 + " 用户名: " + this .UserInfo.Username + " <br> "
80 + " 姓名: " + this .UserInfo.Realname + " <br> "
81 + " 用户的公司主键: " + this .UserInfo.CompanyID + " <br> "
82 + " 用户的公司名称: " + this .UserInfo.CompanyFullName + " <br> "
83 + " 用户的部门主键: " + this .UserInfo.DepartmentID + " <br> "
84 + " 用户的部门名称: " + this .UserInfo.DepartmentFullName + " <br> "
85 + " 用户的工作组主键: " + this .UserInfo.WorkgroupID + " <br> "
86 + " 用户的工作组名称: " + this .UserInfo.WorkgroupFullName + " <br> " ;
87
88 }
89
90 /// <summary>
91 /// 获得用户的权限
92 /// </summary>
93 private void GetPermission()
94 {
95 this .DbHelper.Open();
96
97 // 用户的操作权限
98 this .btnUserAdd.Enabled = this .IsAuthorized( " User.Add " );
99 this .btnUserDelete.Enabled = this .IsAuthorized( " User.Delete " );
100 this .btnUserExport.Enabled = this .IsAuthorized( " User.Export " );
101 this .btnUserImport.Enabled = this .IsAuthorized( " User.Import " );
102 this .btnUserPrint.Enabled = this .IsAuthorized( " User.Print " );
103 this .btnUserUpdate.Enabled = this .IsAuthorized( " User.Update " );
104 // 角色的操作权限
105 this .btnRoleAdd.Enabled = this .IsAuthorized( " Role.Add " );
106 this .btnRoleDelete.Enabled = this .IsAuthorized( " Role.Delete " );
107 this .btnRoleExport.Enabled = this .IsAuthorized( " Role.Export " );
108 this .btnRoleImport.Enabled = this .IsAuthorized( " Role.Import " );
109 this .btnRolePrint.Enabled = this .IsAuthorized( " Role.Print " );
110 this .btnRoleUpdate.Enabled = this .IsAuthorized( " Role.Update " );
111
112 this .DbHelper.Close();
113 }
114
115 protected void Page_Load( object sender, EventArgs e)
116 {
117 if ( ! Page.IsPostBack)
118 {
119 // 测试数据连接
120 this .CheckDbConnection();
121 // 用户的登录操作模拟
122 this .UserLogin();
123 // 显示当前用户的信息
124 this .ShowCurrentUserInfo();
125 // 获得用户的权限
126 this .GetPermission();
127 }
128 }
129 }
130 }
131
当然你也可以把 private void GetPermission() 函数进行以下优化,搞个循环遍历啥的,
能自动绑定权限状态,那就彻底全自动绑定操作权限了,不用每个人都自己写对应的权限
判断了,我不喜欢那么万能的东西,还是喜欢想怎么控制就怎么控制。
下载相应的数据库点这里: /Files/jirigala/DotNet.Common_DB.rar
下载相应的演示程序源码,请堤点这里: /Files/jirigala/JiriSoft.Permission.rar
导读:
通过命名空间的细微差别,很直白的讲个人的那么点儿小算盘、个人的小利益与公司的大利益
疯狂.NET架构通用权限后台管理工具演示版2.0下载
通用权限实现的核心设计思想
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 如何控制用户显示的菜单权限
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 在页面中的调用权限讲解
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 数据集权限的调用权限讲解
标准权限模型RBAC与实际日常开发工作结合后,我对RBAC模型的改进优化研究成果分享
本文转自 jirigala 51CTO博客,原文链接:http://blog.51cto.com/2347979/448330,如需转载请自行联系原作者