精华内容
下载资源
问答
  • 字段权限

    2021-01-11 13:19:09
    <div><p><code>def get_fields(self, request, obj=None): if request.user.is_superuser or ...可以设置字段谁可以看,xadmin怎么弄?</p><p>该提问来源于开源项目:sshwsfc/xadmin</p></div>
  • 字段权限构件

    2016-02-06 10:31:12
    界面字段信息维护后,进入界面字段权限分配模块。使用该模块将模块的字段权限赋给指定的角色,使该角色能够使用该模块的部分字段。该模块界面如图所示: 该模块的字段信息: 字段名称:在...
    

    界面字段信息维护后,进入界面字段权限分配模块。使用该模块将模块的字段权限赋给指定的角色,使该角色能够使用该模块的部分字段。该模块界面如图所示:



    该模块的字段信息:


    • 字段名称:在控制业务字段信息维护模块里维护好的字段界面标签汉字。

    • 物理字段名:是在界面元模块里查询语句返回的记录。

    • 界面ID:该字段所在的模块的ID号。

    • 界面元ID:该字段所在的界面元的ID号。

    • 插入权限:能否对该字段进行插入操作的权限。

    • 修改权限:能否对该字段进行修改操作的权限。


    该模块有新增、修改和删除操作。如下图所示:

    新增操作:点击【新增】按钮,界面进入新增状态。下拉选择要赋给权限的角色,选中要赋给该角色的字段前的复选框,下拉选择插入权限和修改权限;完成后点击【确定】按钮,完成新增操作。如下图所示:

    修改操作:选中要修改权限的角色的字段权限,点击修改】按钮,进入修改状态。重新设置插入权限和修改权限;点击确定按钮,完成修改操作。如下图所示:



    删除操作:选中要修改的角色的字段权限,点击删除按钮。系统弹出确认操作对话框。点击确定按钮删除该字段权限,点击取消按钮取消本次删除操作。


     

    清除权限:1.当选中树的模块节点,角色名称为空时,系统会清除该模块所有角色、所有界面元的权限;2.当选中树的模块节点,角色名称不为空时,系统会清除该模块该角色所有界面元的权限;3.当选中树的界面元节点,角色名称为空时, 系统会清除该界面元的所有角色权限;4.当选中树的界面元节点,角色名称不为空时, 系统会清除该界面元该角色权限。

    展开全文
  • (12.2)用RAP设置功能权限和字段权限,看清版本再下载,有说明
  • 在我的很多Winform开发项目中(包括混合框架的项目),统一采用了权限管理模块来进行各种权限的控制,包括常规的功能权限(按钮、菜单权限)、数据权限(记录的权限),另外还可以进行字段级别的字段权限控制,字段...

    在我的很多Winform开发项目中(包括混合框架的项目),统一采用了权限管理模块来进行各种权限的控制,包括常规的功能权限(按钮、菜单权限)、数据权限(记录的权限),另外还可以进行字段级别的字段权限控制,字段权限是我们在一些对权限要求比较严格的系统里面涉及到的,可以对部分用户隐藏一些敏感的信息。本篇主要介绍字段权限的控制思路及实现机制,以便大家对这个字段权限的控制有一个直观的了解。

    如果需要对权限系统的功能进行一定的了解,可以先回顾下我前面的文章《Winform开发框架之权限管理系统功能介绍》、《如何在应用系统中实现数据权限的控制功能》、《如何在应用系统中实现数据权限的控制功能(2)》,以及《Winform开发框架之权限管理系统改进的经验总结(1)-TreeListLookupEdit控件的使用》、《Winform开发框架之权限管理系统改进的经验总结(2)-用户选择界面的设计》、《Winform开发框架之权限管理系统改进的经验总结(4)--用户分级管理》等文章。

    1、字段权限的设计

    字段的权限控制,一般就是控制对应角色人员的对某个表的一些敏感字段的可访问性:包括可见、可编辑性等处理。

    在设计字段权限的时候,我们需要了解这些还是基于RBAC的概念,基于角色进行授权的,而且我们的字段列表是属于具体的业务对象列表的,这里的业务对象是指一些我们具体的业务模块,如客户基础信息、人员基础信息、报价单等等,我们就是基于这些业务进行字段的控制的。

    如下界面所示,我们在权限系统里面也可以对其字段进行权限控制,如下图所示。先选择左边的具体角色,然后添加一些业务对象,并设置它们的权限即可。

    首次业务对象需要用户加入,这里以程序集中的实体类进行字段信息的标识处理,如下所示可以加载对应业务信息。

    我们在业务对象列表的【显示设置】处可以单击旁边的按钮,在弹出的界面上进行条件的设置,如下界面效果所示。

    这样我们就完成了对某个业务对象的各个字段进行配置了,具体的字段控制在业务模块里面添加部分代码即可实现了。

    例如我们以系统黑名单为例介绍,通过上面的方式进行设置,隐藏起始和结束IP地址的字段,那么列表界面得到的效果如下所示。

    同时,如果系统界面有新增或者编辑界面,那么我们也需要隐藏才可以达到效果,如下是其的编辑界面效果(隐藏显示那两个字段了)。

    以上就是整个字段权限控制的设计思路和实现了,但是具体我们是如何在业务模块里面整合这些权限控制呢?下面我们进行介绍。

    2、字段权限的列表控制处理

    前面我们介绍了在权限系统中进行业务对象的字段权限的设置流程,以及以其中的【登陆系统黑白名单】的业务模块进行的演示,那么我们如何才能在自己的业务模块里面进行控制处理的呢?

    首先我们需要在业务列表绑定的时候,需要获取我们当前用户能够访问的字段列表,默认是全部可见,但是如果用户设置了条件,那么就需要获取对应的权限列表进行控制了,具体的控制代码如下所示。

    //根据业务对象获取对应的显示字段,如果没有设置,那么根据FieldPermit表的配置获取字段权限列表
    var permitDict = BLLFactory<FieldPermit>.Instance.GetColumnsPermit(typeof(BlackIPInfo).FullName, Portal.gc.UserInfo.ID);
    var displayColumns = BLLFactory<BlackIP>.Instance.GetDisplayColumns();
    displayColumns = string.IsNullOrEmpty(displayColumns) ? string.Join(",", permitDict.Keys) : displayColumns;            
    this.winGridViewPager1.DisplayColumns = displayColumns;

    然后在设置字段的中文映射显示

    //设置字段的中文显示
    this.winGridViewPager1.ColumnNameAlias = BLLFactory<BlackIP>.Instance.GetColumnNameAlias();//字段列显示名称转义

    在对列表进行数据绑定后,我们统一设置各个字段的权限的可读写、可见或隐藏值权限即可,如下代码所示。

    //获取字段显示权限,并设置
    this.winGridViewPager1.gridView1.SetColumnsPermit(permitDict);

    整个数据绑定的代码如下所示,这些代码可以利用代码生成工具Database2Sharp进行界面代码统一生成

    /// <summary>
    /// 绑定列表数据
    /// </summary>
    private void BindData()
    {
        //entity
    
        //根据业务对象获取对应的显示字段,如果没有设置,那么根据FieldPermit表的配置获取字段权限列表
        var permitDict = BLLFactory<FieldPermit>.Instance.GetColumnsPermit(typeof(BlackIPInfo).FullName, Portal.gc.UserInfo.ID);
        var displayColumns = BLLFactory<BlackIP>.Instance.GetDisplayColumns();
        displayColumns = string.IsNullOrEmpty(displayColumns) ? string.Join(",", permitDict.Keys) : displayColumns;            
        this.winGridViewPager1.DisplayColumns = displayColumns;
    
        //设置字段的中文显示
        this.winGridViewPager1.ColumnNameAlias = BLLFactory<BlackIP>.Instance.GetColumnNameAlias();//字段列显示名称转义
    
        string where = GetConditionSql();
        List<BlackIPInfo> list = BLLFactory<BlackIP>.Instance.Find(where);
        this.winGridViewPager1.DataSource = new WHC.Pager.WinControl.SortableBindingList<BlackIPInfo>(list);
        this.winGridViewPager1.PrintTitle = "登陆系统的黑白名单列表报表";
    
        //获取字段显示权限,并设置
        this.winGridViewPager1.gridView1.SetColumnsPermit(permitDict);
    }

    对于DevExpress的GridControl列表控件,我们一般在处理过程中需要设置字段的DisplayText转义,那么这种设置后,通过上面代码处理的权限就会失效,我们可以利用对Tag的标识的判断进行处理,如下所示,这样就避免了权限控制无效的情况。

    void gridView1_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
    {
        //如果字段权限不够,那么字段的标签设置为*的
        if (string.Concat(e.Column.Tag) != "*")
        {
            if (e.Column.ColumnType == typeof(DateTime))
            {
                string columnName = e.Column.FieldName;
                if (e.Value != null)
                {
                    if (Convert.ToDateTime(e.Value) <= Convert.ToDateTime("1900-1-1"))
                    {
                        e.DisplayText = "";
                    }
                    else
                    {
                        e.DisplayText = Convert.ToDateTime(e.Value).ToString("yyyy-MM-dd HH:mm");//yyyy-MM-dd
                    }
                }
            }
            else if (e.Column.FieldName == "AuthorizeType")
            {
                if (e.Value != null)
                {
                    e.DisplayText = ((AuthrizeType)e.Value).ToString();
                }
            }
        }
    }

     

    3、字段权限的显示窗体控制处理

    如果在开发Winform界面的时候,把列表的展示统一放在GridControl里面进行展示,不再独立设计展示窗体,那么上面列表控制就已经达到了字段权限的控制目的了:可见或不可见、可编辑或只读、显示或隐藏值等处理。

    在我的Winform框架中,我一般倾向于设计一个界面来展示业务对象的内容,一般新增,查看或者编辑都放在这个窗体上展示信息,比较直观,那么这种对字段权限的控制也需要延伸到这个显示窗体上; 

    对于普通的编辑控件,我们只能控制控件的可读写、可见与否的处理。

    首先我们设计一个函数,用来设置控件的权限的,如下所示。

    /// <summary>
    /// 设置控件字段的权限显示或者隐藏
    /// </summary>
    private void SetPermit()
    {
        #region 设置控件和字段的对应关系
        this.txtName.Tag = "Name";
        this.txtAuthorizeType.Tag = "AuthorizeType";
        this.txtForbid.Tag = "Forbid";
        this.txtIPStart.Tag = "IPStart";
        this.txtIPEnd.Tag = "IPEnd";
        this.txtNote.Tag = "Note";
        this.txtCreator.Tag = "Creator";
        this.txtCreateTime.Tag = "CreateTime";
        #endregion
    
        //获取列表权限的列表
        var permitDict = CallerFactory<IFieldPermitService>.Instance.GetColumnsPermit(typeof(BlackIPInfo).FullName, Portal.gc.UserInfo.ID);
        this.SetControlPermit(permitDict, this.layoutControl1);
    }

    在上面,我们的逻辑就是先为每个控件绑定一个字段的标识,最后通过获取用户的字段权限列表,对控件的权限进行统一的控制处理即可。

    为了开发的省时省力,这些代码可以利用代码生成工具Database2Sharp进行界面代码统一生成

    完成上面SetPermit函数的处理,我们在窗体界面的显示内容上,最后统一设置控件的权限即可,如下代码所示。

    /// <summary>
    /// 数据显示的函数
    /// </summary>
    public override void DisplayData()
    {
        InitDictItem();//数据字典加载(公用)
    
        if (!string.IsNullOrEmpty(ID))
        {
            #region 显示信息
            BlackIPInfo info = CallerFactory<IBlackIPService>.Instance.FindByID(ID);
            if (info != null)
            {
                tempInfo = info;//重新给临时对象赋值,使之指向存在的记录对象
    
                txtName.Text = info.Name;
                txtAuthorizeType.SetComboBoxItem(info.AuthorizeType.ToString());
                txtForbid.Checked = info.Forbid;
                txtIPStart.Text = info.IPStart;
                txtIPEnd.Text = info.IPEnd;
                txtNote.Text = info.Note;
                txtCreator.Text = info.Creator;
                txtCreateTime.SetDateTime(info.CreateTime);
            }
            #endregion
            //this.btnOK.Enabled = Portal.gc.HasFunction("BlackIP/Edit");             
        }
        else
        {
            txtCreator.Text = Portal.gc.UserInfo.FullName;//默认为当前登录用户
            txtCreateTime.DateTime = DateTime.Now; //默认当前时间
            //this.btnOK.Enabled = Portal.gc.HasFunction("BlackIP/Add");  
        }
    
        RefreshUsers();
    
        SetPermit();
    }

    以上就是字段权限的设计思路,实现控制过程,这样我们在权限里面实现了功能权限、菜单权限、数据记录权限、字段权限的综合控制,基本上能够满足大多数业务规则的要求了,从而提高了权限管理系统在整个应用开发中的通用性、便利性,一致性。

    本文转自博客园伍华聪的博客,原文链接:Winform开发框架之字段权限控制,如需转载请自行联系原博主。



    展开全文
  • (一)设计思路  (二)步骤解释 1.request web用户发起的请求 ...改文件的作用是对调试方便,配置了是否按钮权限过滤,是否字段权限过滤 5.生成buttonPermissArray 这个
    (一)设计思路   




     (二)步骤解释
    1.request  
    web用户发起的请求


    2.调用    
    调用service创建控制js代码的方法


    3.读取主js文件。文件名为main.js


    4.读取confi文件
    改文件的作用是对调试方便,配置了是否按钮权限过滤,是否字段权限过滤


    5.生成buttonPermissArray
    这个js变量就是后面js调用按钮权限函数要用的


    6.生成filedPermissionArray
    这个js变量就是后面js调用字段权限函数要用的


    7.按钮权限执行函数,字段权限执行函数
    是一段按钮和字段权限检测的执行函数


    8.嵌入主js代码
    替换main  js文件的@permission


    9.把生成的js代码嵌入到jsp中


    10.respon
    返回jsp页面给web用户
    展开全文
  • scala字段权限问题

    2018-12-29 16:03:00
    1.对象私有字段 1)private class Counter(num: Int) { private var value = 0 def increment() = { value += 1 } def isLess(other: Counter) = value < other.value def printlnNum():.....

    1.对象私有字段

     1)private

    class Counter(num: Int) {
      private var value = 0
    
      def increment() = {
        value += 1
      }
    
      def isLess(other: Counter) = value < other.value
    
      def printlnNum(): Unit = {
        println("num: " + num)
      }
    
      //  def isLess(other: Counter) = value
    }
    
    
    
    object Counter {
      def main(args: Array[String]): Unit = {
        /*
        * 1. 方法可以访问类的所有对象的私有字段
        */
        val counter1 = new Counter(3)
        counter1.increment()
    
        val counter2 = new Counter(4)
        counter2.increment()
        counter2.increment()
    
        println(counter1.isLess(counter2))    // 结果:true  因为1<2
      }
    }
    

      

      解释:方法可以访问类的所有对象的私有字段。 所以即使value字段是private的,非当前对象other对象也可以访问到value字段。

     

     2) private[this]

     解释:私有字段加上[this]修饰符,可以字面简单的理解为该字段是私有的(private)并且只限当前对象[this]使用。 所有other对象访问不到 value 字段。

     

    3)类构造参数 

    class Counter(num: Int) {
      private var value = 0
    
      def increment() = {
        value += 1
      }
    
      def isLess(other: Counter) = value < other.value
    
      //  def isLess(other: Counter) = value
      def subNum(other: Counter): Int = {
        num - other.num
      }
    }
    
    // 测试 object Counter { def main(args: Array[String]): Unit = { val counter1 = new Counter(3) val counter2 = new Counter(4) println(counter1.subNum(counter2)) } }

      编译会报 error: value num is not a member of cn.XX.quickScala.jurisdiction.Counter。

       解释:类构造参数不是字段,所以每个类的构造参数都只能当前对象this访问,是不能在当前类中访问另一个同一个类对象的构造参数的【虽然能点出来,但编译通不过】

     

    解决方案: 加字段,将类构造参数赋值给字段

     

     

    结果是  -1

     

    总结:

    private[this] 字段 和 类构造参数都是只能在当前对象范围内访问到,是访问不到同一个类的另一个对象的 private[this]字段 或 类构造参数的。   

    但需要注意,访问另一个对象的private[this] 编译器直接会提示找不到,编程的时候是 . 不出来的。而访问另一个对象的 类构造参数时,是可以 . 出来的,但编译通不过。

     

    private 所有的类对象都可以访问到,不管是当前this对象还是传入的外围同一个类对象。 同java一样,private字段是只能在当前类型访问的,在类外面是无法访问到的。

     

    转载于:https://www.cnblogs.com/ityuanmanito/p/10196498.html

    展开全文
  • 不同的用户点击不同的导航时有不同的权限,有禁止读取,只读,读写三种关系。当用户点击这个界面时,开始查询这个用户的角色,并判断这个角色有没有...再判断这个角色的所有可读字段。再进行sql拼装。这样子来控制权限
  • EAS 字段权限控制

    千次阅读 2018-01-18 13:48:28
    https://wenku.baidu.com/view/b27b79673968011ca300919a.html
  • mysql 字段权限控制

    2017-12-18 14:43:00
    GRANT SELECT(id) ON TABLE db_test.test_user TO user@localhost; 转载于:https://www.cnblogs.com/wupeihong/p/8057532.html
  • Frields前一篇文章介绍了 Fedora 系统上有关文件权限的一些基础知识。本部分介绍使用权限管理文件访问和共享的其他方法。它建立在前一篇文章中的知识和示例的基础上,所以如果你还没有阅读过那篇文章,请查看它。...
  • 表单字段权限控制1) 流程设计器设置:2) Xml中&lt;task … … … …&gt;… … … …&lt;edit-right&gt; &lt;field&gt; &lt;name&gt;出差日期[outDate:DATE:TEXT:outDate]&lt...
  • 1、数据权限概述1.1、什么是数据权限?数据权限是指对系统用户进行数据资源可见性的控制,通俗的解释就是:符合某条件的用户只能看到该条件下对应的数据资源。那么最简单的数据权限大概就是:用户只能看到自己的数据...
  • [易飞]表单字段权限控制

    千次阅读 2015-03-25 12:19:37
    之前一直以为易飞权限无法细化到字段。因为在权限管理那边确实无法细化。今天在设计自定义画面的时候,看到以下画面发现可以通过这个方式来处理。需求:只允许A374用户修改录入客户信息中的付款条件。解决办法:1....
  • 在获取对象字段的时候,注意权限问题 ①clazz.getField("fieldName")只有public的字段才可以获取到,protected、默认、private都无法获取到,抛出java.lang.NoSuchFieldException异常 ②clazz.getDeclaredField(...
  • 传送门:jira使用文档_Java_pang787559613的博客-CSDN博客​blog.csdn.netjira权限设置-各个项目组查看不同项目_开发工具_pang787559613的博客-CSDN博客​blog.csdn.netjira字段配置(域配置)_到期日、时间跟踪等...
  • 1、 对qty_done字段进行控制,采购入库单 仓库只可见,然而采购不是仓库管理员 2、对qty_done字段进行控制,是采购单时,仓库可见能编辑,但是内部调拨单是可以编辑的。   转载于:...
  • 展开全部个人觉得提的问题范围有些大e68a843231313335323631343130323136353331333365653935,如果只针对案例要解决这个问题很简单,只需要设置部门,个人的使用权限即可,权限都是叠加的,比如A员工只能查看A部门的工资,...
  • "屏幕字段 SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME . SELECT-OPTIONS G_BUKRS FOR ANLA-BUKRS. SELECTION-SCREEN END OF BLOCK A .  START-OF-SELECTION.  PERFORM FRM_...
  • 前面已经介绍了iMatrix平台办理人设置的原理,下面再看看表单字段权限是怎样实现的? 1) 流程设计器设置:   1) Xml中 … … … …    出差日期[outDate:DATE:TEXT:outDate]  ...
  • 我们习惯了在页面上有几个按钮,控制这几个按钮的权限,都做得都很熟练 例如有 btnAdd 添加按钮,btnEdit 编辑按钮,btnDelete 删除按钮,此 页面是学生基本信息管理页面 frmStudentManager。 那我们可以设置如下...
  • 来博客园读文章的,也不是人人都是高手,也有一些初学者,此文主要面向入门者,对权限接触不深者提供参考。 我们习惯了在页面上有几个按钮,控制这几个按钮的权限,都做得都很熟练 例如有 btnAdd ...
  • 来博客园读文章的,也不是人人都是高手,也有一些初学者,此文主要面向入门者,对权限接触不深者提供参考。我们习惯了在页面上有几个按钮,控制这几个按钮的权限,都做得都很熟练例如有 btnAdd 添加按钮,btnEdit ...
  • 金蝶K3物料分字段控制编辑权限

    千次阅读 2019-08-27 09:44:54
    需求:物料维护人员为数据管理部,其中物料里边的版本号字段需要研发部人员可以修改。但是不能给研发部人员开其他字段的编辑权限。... 找到需要进行字段权限控制的组或者用户,右键-字段权限管理; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,771
精华内容 3,508
关键字:

字段权限