zoukankan      html  css  js  c++  java
  • Dynamic 验证用户是否对实体有读写权限

    dynamic的一个缺点在于,我有用户表的业务级读写权限吗,在查找类型中我就能选中所有用户,但有时这群用户中应该剔除没有权限的人了。这个一般来说,dynamic自带的程序或者api没有,需要自己去写,查了网上的实例!达到的效果并没有想象中那么好!so,就只能独创门派!
    一、注册一个action,给这个action的权限赋为admin
    applyid:用户ID,剔除大括号
    accountid:需要验证的实体数据
    Message:返回的结果
    二、在页面上创建一个“两个选项”的字段(用于测试用户是否有读权限)

    三、写后端代码

     
    IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
    IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
    IOrganizationService service = serviceFactory.CreateOrganizationService(Guid.Parse(context.InputParameters["applyid"] as string));
    //查询客户信息
     string accountid = context.InputParameters["accountid"] as string;
    try
      {
        //查询信息,验证是有对数据的查询权限
          QueryExpression q = new QueryExpression();
          q.EntityName = "account";
          q.ColumnSet = new ColumnSet(true);
          q.Criteria.AddCondition("accountid", ConditionOperator.Equal, Guid.Parse(accountid));
          EntityCollection e2 = service.RetrieveMultiple(q);//获取实体信息
        //存在读权限的话返回的集合数应大于0
          if (e2.Entities.Count==0)
          {
              context.OutputParameters["Message"] = "False";
          }
          else
          {
              //存在读权限,测试是否有写权限,修改页面的“两个选项”值没有修改权限会
              //直接走catch中的语句返False
              Entity e = e2.Entities[0];
              if (Convert.ToBoolean(e.Attributes["new_test_right_control"]))
              {
                    e["new_test_right_control"] = false;
              }
              else
              {
                    e["new_test_right_control"] = true;
              }
              service.Update(e);
              context.OutputParameters["Message"] = "True";
           }
                    
        }
        catch (Exception ex)
        {
              context.OutputParameters["Message"]="False";
        }
  • 相关阅读:
    bzoj3514 Codechef MARCH14 GERALD07加强版
    差分数列(学习笔记)
    mysql 数据库 replace、regexp的用法
    30岁前男人需要完成的事
    硬盘故障修复十大攻略
    网络工程师考试必备知识
    系统不能正常关机
    忘记XP登入密码的9种解决办法
    Mysql全文搜索match...against的用法
    双绞线网线的连接方式
  • 原文地址:https://www.cnblogs.com/LanHai12/p/15258020.html
Copyright © 2011-2022 走看看