疯狂.NET 通用权限设计 C\S后台管理,B\S前台调用源码样例程序源码下载之 --- 操作权限...
权限,只要一行代码就可以在程序里准确判断,用最少的参数,用最最简单的
方法,通用程序判断程序运行得铜墙铁壁一样稳定,这就是我的追求。
废话少说我主要讲解的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项目,中写的源码如下,供您参考:
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模型的改进优化研究成果分享
http://shop59297253.taobao.com/
转载于:https://www.cnblogs.com/jirigala/archive/2009/09/06/1561477.html
疯狂.NET 通用权限设计 C\S后台管理,B\S前台调用源码样例程序源码下载之 --- 操作权限...相关推荐
- android 带记忆功能的播放器源码,【全开源可二开】带后台管理面板的在线音乐播放器Android应用APP源码...
这是一款带后台管理面板的在线音乐播放器Android应用APP源码,可让您更快地构建在线和离线android音频播放器,代码全开源适合二次开发.该源码自带2个紫色和橙色主题(允许您添加更多主题),多语 ...
- 数据权限设计思路_后台权限管理设计思路:三种模型分析
编辑导语:任何系统/产品搭建时,最先考虑的都应该是权限管理模块,而且权限管理模块的清晰.稳定是平台产品健康发展的基石,权限管理核心考虑的问题是用户与权限的关系.本文作者对三种不同权限管理的版本展开了梳 ...
- vue考试系统后台管理项目-接口封装调用
上一篇文章 : vue考试系统后台管理项目-登录.记住密码功能_船长在船上的博客-CSDN博客 考试系统后台管理项目介绍: 技术选型:Vue2.0+Element-ui 项目功能介绍: 账户信息模块: ...
- tp3.2.3权限控制二之后台管理部分,及菜单栏目显示问题
上篇记录了一下权限控制部分的实现过程,以及实现的代码.但那些只是实现了简单的权限控制,具体的后台当然要有用户的管理,用户组的管理,规则管理等.这篇主要是写后台部分,和上篇凑成一个完整的环. 第一篇文章 ...
- 【动画设计的vue后台管理欢迎页】
动画设计的vue欢迎页 1.可以复制参考 代码如下(示例): <template><div class="jianbian"><!-- <el- ...
- 后台接收数组_微信小程序如何与后台api接口进行数据交互(微信报修小程序源码讲解七)...
完成用户授权登录逻辑后,接下来的开发工作大部分都是与后台 api 接口的交互,本节我们详细讲解一下小程序如何与 api 进行交互 . 小程序如何发送 http/https 请求到后台? 小程序请求 h ...
- java web聊天室论文_基于Java网页版聊天室的设计与实现毕业论文含开题报告及文献综述(样例3)...
<基于Java网页版聊天室的设计与实现毕业论文含开题报告及文献综述.doc>由会员分享,可免费在线阅读全文,更多与<基于Java网页版聊天室的设计与实现毕业论文含开题报告及文献综述& ...
- 后台管理登陆注册跳转以及基础模板 附Gitlab源码
话不多说上链接: 23ssD / admin模板 · GitLab
- 疯狂.NET架构通用权限后台管理工具演示版2.0下载
程序未必是最好的,但是我目前所能拥有的程序里是最好的, 功能未必是最全的,但是我目前所能拥有的程序里是最好的. 不管我的再怎么不好,也有成熟的产品,商品化的成果物,请不要乱打击我,你有实力就把你的拿出 ...
最新文章
- [老贴]《asp.net高级编程》读书笔记(2)
- 修复错误配置fstab文件导致系统无法正常启动
- 信息检索(IR)的评价指标介绍-准确率、召回率、F1、mAP、ROC、AUC
- 无法识别的属性“targetFramework”。请注意属性名称区分大写和小写。错误解决的方法...
- mysql 5.7.15 union order by 子查询排序不生效
- 查看文件时间及修改(MACN,stat命令,touch命令)
- fabric-ca 登记身份时报Error: Response from server: Error Code: 20 - Authentication failure
- 毫秒级百万数据分页存储过程(mssql)
- ubuntu20.04安装MySQL、卸载MySQL命令
- iMovie for Mac如何创建分屏效果?
- ni软件可以卸载吗_电视盒子自带的软件居然可以这样卸载!
- 人人商城小程序消息服务器配置,人人商城小程序订阅消息设置方法和几个坑!...
- Ubuntu18.04 显卡驱动完美安装(解决安装后无法进入桌面)
- 如何把密度函数化为标准正态二维分布_数理统计第四讲(次序统计量续,伽马分布)...
- ubuntu18.04安装vmware虚拟机
- ORACLE 按照指定的ID 顺序排序
- 充电电池哪个牌子好用?
- BOM学习记录一:BOM解释
- matlab 中实现读取图像上点坐标并在图片上标记点和将坐标显示出来
- Linux-USB驱动笔记(一)
热门文章
- ant design pro模板_分享10 个开源免费且优秀的后台管理系统模板
- Java编写优雅接口,看看别人后端API接口写得,那叫一个优雅!
- oracle rman 20207,RMAN-20207: UNTIL TIME or RECOVERY WINDOW is before RESETLOGS time
- python读取行、分割、存储_Pytables / Pandas:组合(读取?)按行分割的多个HDF5存储...
- 乐观锁 VS 悲观锁(简述)
- python解决xml文件中存在中文文字的问题
- 语音识别——触发字检测
- 学习Linux第一天
- redis系列:redis介绍与安装
- CentOS7 设置防火墙端口