FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 1801|回复: 4
打印 上一主题 下一主题

让权限控制更简单些,粒度更细,代码更少

[复制链接]
跳转到指定楼层
楼主
发表于 2014-2-19 15:50:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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:44 | 只看该作者
顶一下  好文 传一个demo好一些
板凳
发表于 2014-2-19 17:16:05 | 只看该作者
要看看啊,学习学习
地板
发表于 2014-2-20 01:17:10 | 只看该作者
本人非常感兴趣!也正努力做到这一点:
页面(功能模块)的相应操作权限控制,通过对按钮这一控件的权限来实现
5#
发表于 2014-2-20 14:48:00 | 只看该作者
有实际用例么,现在我是通过一系列得权限配置去实现。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-27 02:28 , Processed in 0.044943 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表