AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > C语言

教你轻松给流程增加权限控制程序

51自学网 2015-09-06 http://www.wanshiok.com

  WF提供权限控制的功能,其中包括两种方式:ActiveDirectoryRole(通过活动目录用户)和WebWorkflowRole(ASP.NET Role)。下面我以WebWorkflowRole的方式作为权限控制例子做介绍,首先需要安装aspnetdb数据库(通过运行微软提供的aspnet_regsql.exe文件);App.config文件配置如下:

以下是引用片段:
<?xmlversion="1.0"encoding="utf-8" ?>
<configuration>
 <connectionStrings>
    <addname="SqlServerConnection"
         connectionString="Integrated Security = SSPI;server=localhost/SQLExpress;database=aspnetdb" />
 </connectionStrings>
 <system.web>
    <roleManagerenabled="true"defaultProvider="SqlProvider">
      <providers>
        <addname="SqlProvider"connectionStringName="SqlServerConnection"applicationName="ConsoleAppSample"
          type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </providers>
    </roleManager>
 </system.web>
</configuration>
 
  通过下面的代码产生角色:
 
以下是引用片段:
        ///<summary>
        ///产生角色
        ///</summary>
        private void CreateRoles()
        {
            if (!System.Web.Security.Roles.RoleExists("Personnel"))
            {
                System.Web.Security.Roles.CreateRole("Personnel");

                string[] users = { "Amanda", "Jones", "Simpson", "Peter" };
                string[] PersonnelRole = { "Personnel" };

                System.Web.Security.Roles.AddUsersToRoles(users, PersonnelRole);
            }

            if (!System.Web.Security.Roles.RoleExists("DeptManager"))
            {
                System.Web.Security.Roles.CreateRole("DeptManager");

                string[] users1 = { "Betty", "Chris", "Anil", "Derek" };
                string[] DeptManagerRole = { "DeptManager" };

                System.Web.Security.Roles.AddUsersToRoles(users1, DeptManagerRole);
            }            
        }

  假如用登录用户"Betty"为部门经理角色,通过下面的代码可以把登录用户和权限控制相结合:GenericIdentity genIdentity = new GenericIdentity("Betty ");通过调用外部事件Activity的方法把genIdentity作为事件的参数传入流程中。

  在流程定义的文件中(Workflow1.cs)定义公共变量:

以下是引用片段:
public WorkflowRoleCollection eaInitiators = new System.Workflow.Activities.WorkflowRoleCollection();

  通过下面的代码把部门经理角色增加到流程角色列表:

以下是引用片段:
            //装载部门经理角色
            WebWorkflowRole eaInitiatorsRole = new WebWorkflowRole("DeptManager");
        eaInitiators.Add(eaInitiatorsRole);
 
  WF通过检查传入的登录名参数是否存在于流程角色列表的某个角色中来实现流程权限控制。

 

 

 
说明
:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
 
上一篇:怎样在Web开发中完美控制IE标题栏  下一篇:在不装AD的情况下管理SPS的访问群体