[此文来源于互联网,牛C网只负责收集整理]
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>
<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);
}
}
///产生角色
///</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);
WebWorkflowRole eaInitiatorsRole = new WebWorkflowRole("DeptManager");
eaInitiators.Add(eaInitiatorsRole);
WF通过检查传入的登录名参数是否存在于流程角色列表的某个角色中来实现流程权限控制。
作者:gdgzboy@牛C网
地址:http://www.niuc.net/post/2034/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
牛C网推荐您再看看以下日志:
Visual C#多线程参数传递浅析
javascript 调用 WebService的方法
用多活动结果集优化ADO.NET2.0数据连接
ASP.NET MySQL数据库简明图示入门(2)
Autodesk官方最新的.NET教程(六)(C#版)
asp.net身份验证(登录控件),基于标准的sqlserver
.NET中Form.AutoScrollPosition的运用
一个由字符引起的XML加载错误
.Net 中通用的FormatString格式符整理
Asp.Net细节性问题精萃
Visual C#多线程参数传递浅析
javascript 调用 WebService的方法
用多活动结果集优化ADO.NET2.0数据连接
ASP.NET MySQL数据库简明图示入门(2)
Autodesk官方最新的.NET教程(六)(C#版)
asp.net身份验证(登录控件),基于标准的sqlserver
.NET中Form.AutoScrollPosition的运用
一个由字符引起的XML加载错误
.Net 中通用的FormatString格式符整理
Asp.Net细节性问题精萃
关于C#代码实现ControlTemplate
在不装AD的情况下管理SPS的访问群体





