把权限控制做成用户控件--简易型
2014-12-11 11:04
246 查看
大家都知道,程序员是很辛苦的,做为程序开发人员,肯定要想办法减轻工作量,以获得足够多的业余时间做自己喜欢做的事。做好接口,以方便后续把部分用户需求转架到HELPDESK组去,这样,不但省去了实现的时间,连谈需求的时间也省了。其实这篇的功能并不能节省多少时间。反而上一篇的条码设计节省了相当大的时间。废话少说,这里的权限控制,主要是控件页面的简单的增删改而已,并没有对特别字段做控制的。虽然比较简单,但也基本能满足大部分的需求了。这其中只涉及两个表,表也相当的简单,分别如下:
USERIGHT: 用户权限表,结构如下,主要是用户/群组对应某个模组的权限。
USERUSER: 用户与组的关联表。结构如下。
好了,下面是核心的代码。
也是相当的简单,之所以用max,是取权限大者。 然后添加几个属性就可以封装成dll。在画面引用一下。就可以简单易用了。
画面加载的时候判断一下,如果没权限则跳转
其实最上面两个属性也可以做成默认的,这样每个画面又可以少两句了。如果画面涉及到增删改,也可以加入判断。即使是grid方面的。参考如下代码。
前台设置如下,也是相当简单。
这里没有技术难点。涉及的知识也相当简单。对一些初学者应该有用,如果大牛们有复杂控制的,相当全面的,望不吝赐教。
USERIGHT: 用户权限表,结构如下,主要是用户/群组对应某个模组的权限。
USERUSER: 用户与组的关联表。结构如下。
好了,下面是核心的代码。
public void Run() { string format = "SELECT MAX(CANREAD) CANREAD,MAX(CANINS) CANINS,MAX(CANDEL) CANDEL,MAX(CANUPD) CANUPD "; format = format + "FROM USERIGHT where (SUSER='{0}' OR SUSER IN (SELECT ISA FROM USERUSER WHERE SUSER='{0}')) AND MODNAME='{1}'"; SqlConnection connection = new SqlConnection(this.ConnectString); try { connection.Open(); SqlCommand command = new SqlCommand(); command.CommandText = string.Format(format, this.User, this.Module); command.Connection = connection; SqlDataReader reader = command.ExecuteReader(); if (reader.Read()) { if (reader["CANREAD"] != null) { if (reader["CANREAD"].ToString().Trim() != "") { this.ViewState["CANREAD"] = reader["CANREAD"].ToString(); } else { this.ViewState["CANREAD"] = "0"; } } else { this.ViewState["CANREAD"] = "0"; } if (reader["CANINS"] != null) { if (reader["CANINS"].ToString().Trim() != "") { this.ViewState["CANINSERT"] = reader["CANINS"].ToString(); } else { this.ViewState["CANINSERT"] = "0"; } } else { this.ViewState["CANINSERT"] = "0"; } if (reader["CANDEL"] != null) { if (reader["CANDEL"].ToString().Trim() != "") { this.ViewState["CANDELETE"] = reader["CANDEL"].ToString(); } else { this.ViewState["CANDELETE"] = "0"; } } else { this.ViewState["CANDELETE"] = "0"; } if (reader["CANUPD"] != null) { if (reader["CANUPD"].ToString().Trim() != "") { this.ViewState["CANUPDATE"] = reader["CANUPD"].ToString(); } else { this.ViewState["CANUPDATE"] = "0"; } } else { this.ViewState["CANUPDATE"] = "0"; } } else { this.ViewState["ERRMSG"] = "No record found!"; } if ((this.ViewState["CANREAD"].ToString() == "0") && (this.ErrMsgPage.Trim() != "")) { } } catch (Exception exception) { this.ViewState["ERRMSG"] = exception.Message; } finally { connection.Close(); } }
也是相当的简单,之所以用max,是取权限大者。 然后添加几个属性就可以封装成dll。在画面引用一下。就可以简单易用了。
画面加载的时候判断一下,如果没权限则跳转
其实最上面两个属性也可以做成默认的,这样每个画面又可以少两句了。如果画面涉及到增删改,也可以加入判断。即使是grid方面的。参考如下代码。
if (e.Item.FindControl("btnDelete") != null) { Button button = (Button)e.Item.FindControl("btnDelete"); if (this.Useright1.CanDelete == 0) { button.Attributes.Add("onclick", "alert('" + base.GetErrMsgXml(0x3eb) + "');return false; "); } else { button.Attributes.Add("onclick", "return confirm('" + base.GetErrMsgXml(0x3e8) + "');"); } }
前台设置如下,也是相当简单。
这里没有技术难点。涉及的知识也相当简单。对一些初学者应该有用,如果大牛们有复杂控制的,相当全面的,望不吝赐教。
相关文章推荐
- Asp.net 权限控制 利用用户控件include到页面
- Asp.net 权限控制 利用用户控件include到页面
- Asp.net 权限控制 利用用户控件include到页面
- java 使用过滤器控制用户访问权限
- 关闭 Windows Server 2008 用户权限控制(UAC)
- 文件夹的完全控制权限赋给aspnet用户(ntfs,cacls)
- Community Server 2007 用户管理与权限控制
- 自定义日期输入控件-解决需要用户输入日期的麻烦控制
- ORACLE学习--有关用户及权限的控制
- 地磅称量系统之(37~39) 直接向数据库的数据表WtBill添加测试数据以及绑定用户控件和使用编码的方式控制dataGridView控件的每列属性和添加数据数据库的表中不存在的字段(非绑定列)
- SQL Server 2005 中设置某个用户对某一个数据库有完全控制的权限
- 对用户登陆ftp、ssh、telnet的权限进行控制
- 用户控件--控制一个文本框只允许输入固定多个字符(按照字节计算)
- Form认证下,“完全控制”权限用户,创建页面出错
- 控制用户访问--用户和权限
- 关闭 Windows Server 2008 用户权限控制(UAC)
- 自定义日期输入控件-解决需要用户输入日期的麻烦控制
- 使用缓存控制用户权限类
- 用参数来控制用户控件的缓存
- struts2 拦截器控制用户登录权限