程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 教你給流程增加權限控制程序

教你給流程增加權限控制程序

編輯:關於C++

WF提供權限控制的功能,其中包括兩種方式:ActiveDirectoryRole(通過活動目錄用戶)和WebWorkflowRole(ASP.NET Role)。下面我以WebWorkflowRole的方式作為權限控制例子做介紹,首先需要安裝aspnetdb數據庫(通過運行微軟提供的aspnet_regsql.exe文件);App.config文件配置如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
   <addname="SqlServerConnection"
     connectionString="IntegratedSecurity=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通過檢查傳入的登錄名參數是否存在於流程角色列表的某個角色中來實現流程權限控制。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved