教你輕松給流程增加權(quán)限控制程序

字號:

WF提供權(quán)限控制的功能,其中包括兩種方式:ActiveDirectoryRole(通過活動(dòng)目錄用戶)和WebWorkflowRole(ASP.NET Role)。下面我以WebWorkflowRole的方式作為權(quán)限控制例子做介紹,首先需要安裝aspnetdb數(shù)據(jù)庫(通過運(yùn)行微軟提供的aspnet_regsql.exe文件);App.config文件配置如下:
    以下是引用片段:
     connectionString="Integrated Security = SSPI;server=localhost\SQLExpress;database=aspnetdb" />
     type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    通過下面的代碼產(chǎn)生角色:
    以下是引用片段:
     ///
     ///產(chǎn)生角色
     ///
     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"為部門經(jīng)理角色,通過下面的代碼可以把登錄用戶和權(quán)限控制相結(jié)合:GenericIdentity genIdentity = new GenericIdentity("Betty ");通過調(diào)用外部事件Activity的方法把genIdentity作為事件的參數(shù)傳入流程中。
    在流程定義的文件中(Workflow1.cs)定義公共變量:
    以下是引用片段:
    public WorkflowRoleCollection eaInitiators = new System.Workflow.Activities.WorkflowRoleCollection();
    通過下面的代碼把部門經(jīng)理角色增加到流程角色列表:
    以下是引用片段:
     //裝載部門經(jīng)理角色
     WebWorkflowRole eaInitiatorsRole = new WebWorkflowRole("DeptManager");
     eaInitiators.Add(eaInitiatorsRole);
       WF通過檢查傳入的登錄名參數(shù)是否存在于流程角色列表的某個(gè)角色中來實(shí)現(xiàn)流程權(quán)限控制。