RDIFramework.NET开发实例━表约束条件权限的使用-Web

RDIFramework.NET开发实例━表约束条件权限的使用-Web

           在上一篇文章“RDIFramework.NET开发实例━表约束条件权限的使用-WinForm”我们讲解了在WinForm下表约束条件权限的使用,下面我们来看看在Web下的使用。

        在实际的应用中,客户常有这样的需求,指定用户或角色可以看指定条件下的数据,这里的“指定条件”在RDIFramework.NET框架中,我们称作为“用户或角色的约束条件表达式”。要完成这样的功能,可以通过RDIFramework.NET框架中的用户或角色的“约束条件权限设置”功能即可完成,再在你的业务表单中调用我们的得到用户或角色的约束条件表达式接口即可完成。

         可以调用框架提供的下面几个接口即可完成对用户或角色约束条件的得到。

1、RDIFrameworkService.Instance.TableColumnsService.GetConstraint
2、RDIFrameworkService.Instance.TableColumnsService.GetUserConstraint

     下面我们以实例进行展示约束条件权限的设置,可供用户参考。

         要使用“约束条件权限”首先需要在用户权限或角色权限中设置用户或角色的“约束条件”表达式。用户的“约束条件权限设置”如下图所示:

技术分享

  在“系统管理”→“用户权限管理”→“权限设置”→“约束条件权限设置”,即可打开上面的窗口。在“表约束条件”设置窗口,可以选择我们需要设置表的约束条件,点击“设置条件表达式”即可设置。如下图所示:  

技术分享

  “角色约束条件的设置”与“用户约束条件设置”类似,可参考上面的“用户约束条件设置”,角色约束条件设置窗口如下:

技术分享

         经过上面的设置,现在我们就可以使用“约束条件”了,使用很简单,只需在需要展示数据的地方通过框架提供的服务接口即可。下面我们以“产品管理”来演示约束条件权限。

         在“产品管理”主界面的得到分页数据的代码中调用以下接口即可得到用户的约束条件

1、RDIFrameworkService.Instance.TableColumnsService.GetConstraint(this.UserInfo, PiUserTable.TableName, this.UserInfo.Id, ProductInfoTable.TableName); //按表约束条件获得数据(按当前用户)。
2、RDIFrameworkService.Instance.TableColumnsService.GetUserConstraint(this.UserInfo, ProductInfoTable.TableName); //按表约束条件获得数据(得到用户与角色的约束条件)。
  完整代码如下:
private void GetPageData(RequestParamModel<CASE_PRODUCTINFOEntity> rpm, HttpContext ctx)
{
    var manager = new CASE_PRODUCTINFOManager(this.dbHelper);
    int recordCount = 0;
    string sort = rpm.Sort;
    string order = rpm.Order;
    if (string.IsNullOrEmpty(sort))
    {
        sort = CASE_PRODUCTINFOTable.FieldCREATEON;
    }
    if (string.IsNullOrEmpty(order))
    {
        order = "DESC";
    }
 
    string filter = rpm.Filter;
    if (string.IsNullOrEmpty(filter))
    {
        filter = CASE_PRODUCTINFOTable.FieldDELETEMARK + " = 0 ";
    }
    UserInfo cUser = Utils.UserInfo;
    //string userConstraintExpress = RDIFrameworkService.Instance.TableColumnsService.GetConstraint(cUser, PiUserTable.TableName, cUser.Id, CASE_PRODUCTINFOTable.TableName); //按表约束条件获得数据(按当前用户)。
    string userConstraintExpress = RDIFrameworkService.Instance.TableColumnsService.GetUserConstraint(cUser, CASE_PRODUCTINFOTable.TableName); //按表约束条件获得数据(得到用户与角色的约束条件)。
 
    if (!string.IsNullOrEmpty(userConstraintExpress))
    {
        filter += " AND " + userConstraintExpress;
    }
     
    var dtTemp = manager.GetDTByPage(out recordCount, rpm.Pageindex, rpm.Pagesize, filter, (sort + " " + order));
    ctx.Response.Write(JSONhelper.FormatJSONForEasyuiDataGrid(recordCount, dtTemp));
} 

       在上图中我们对用户”yonghu”设置了约束条件,现在我们以“yonghu”登录系统看下他能看到的数据:

技术分享

       我们对用户“yonghu”设置的约束条件是单价大于10000,在上图中,可以看到系统已经自动过滤了数据共143条数据。我们再以超级管理员用户登录进来看下,如下图所示: 

技术分享 

       以超级管理员登录的数据是8971条。  

       以上只是一个简单的实例展示,还可以更加灵活的应用到其他各个实用的场合。 

作者: EricHu
出处: http://www.cnblogs.com/huyong
Email: [email protected]
QQ 交流:406590790
QQ群:237326100
平台博客: 【CSDN】http://blog.csdn.net/chinahuyong
         【CNBLOGS】http://www.cnblogs.com/huyong
关于作者:高级工程师、信息系统项目管理师、DBA。专注于微软平台项目架构、管理和企业解决方案,多年项目开发与管理经验,曾多次组织并开发多个大型项目,精通DotNet,DB(SqlServer、Oracle等)技术。熟悉Java、Delhpi及Linux操作系统,有扎实的网络知识。在面向对象、面向服务以及数据库领域有一定的造诣。现从事DB管理与开发、WinForm、WCF、WebService、网页数据抓取以及ASP.NET等项目管理、开发、架构等工作。
如有问题或建议,请多多赐教!
本文版权归作者和CNBLOGS博客共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过邮箱或QQ 联系我,非常感谢。
技术分享




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。