FineUI 官方论坛
标题:
让权限控制更简单些,粒度更细,代码更少
[打印本页]
作者:
yimi00
时间:
2014-2-19 15:50
标题:
让权限控制更简单些,粒度更细,代码更少
本帖最后由 yimi00 于 2014-2-19 15:53 编辑
去年上手fineui后一直在想怎么控制权限,购买了appbox后发现看不懂(个人水平问题),后来通过奋战,任督二脉打通了,跟大家分享一下,高手勿笑,只是简单的权限控制。
控制粒度:以控件为单位,包括grid的列,treeNode等
控制功能:可视,可操作性
实现方法:把每个页面需要控制的控件做记录,然后控件分组,可交叉分组,如A控件可在管理员组,也可以在技术员组
实现流程:
加载页面初始化--从数据库读取登陆人员所在组和所在页面的控件列表--对控件进行可视、可操作的属性设置从而达到控制要求。
提供一些控制控件属性的代码
目前正在调整代码,看看兄弟反应,有必要的就上传一个空项目。
//设置按钮的
protected void PowerButton(object controlName)
{
object o = this.GetType().GetField(controlName.ToString(), System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.IgnoreCase).GetValue(this);
((FineUI.Button)o).Enabled = false;
}
//设置grid列的
protected void PowerGridBoundField(object controlName)
{
object o = this.GetType().GetField(controlName.ToString(), System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.IgnoreCase).GetValue(this);
((FineUI.BoundField)o).Hidden = true;
}
//设置GridWindowField的
protected void PowerGridWindowField(object controlName)
{
object o = this.GetType().GetField(controlName.ToString(), System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.IgnoreCase).GetValue(this);
((FineUI.WindowField)o).Enabled = false;
}
设置Grid普通列的
protected void PowerGrid(object controlName)
{
object o = this.GetType().GetField(controlName.ToString(), System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.IgnoreCase).GetValue(this);
FineUI.Grid g = (FineUI.Grid)o;
//g.FindColumn();
g.Columns[1].Hidden = true;
}
//设置TextBox的
protected void PowerTextBox(object controlName)
{
object o = this.GetType().GetField(controlName.ToString(), System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.IgnoreCase).GetValue(this);
FineUI.Grid g = (FineUI.Grid)o;
g.Columns[1].Hidden = true;
}
只需要三个表,在PageBase中加入几段代码即可实现权限控制。然后在每个需要控制的界面继承PageBase
作者:
狐狸猫
时间:
2014-2-19 16:19
顶一下 好文 传一个demo好一些
作者:
小兔乱闯
时间:
2014-2-19 17:16
要看看啊,学习学习
作者:
szjazz
时间:
2014-2-20 01:17
本人非常感兴趣!也正努力做到这一点:
页面(功能模块)的相应操作权限控制,通过对按钮这一控件的权限来实现
作者:
Min
时间:
2014-2-20 14:48
有实际用例么,现在我是通过一系列得权限配置去实现。
欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/)
Powered by Discuz! X3.4