给流程增加权限控制

 WF提供权限控制的功能,其中包括两种方式: ActiveDirectoryRole (通过活动目录用户)和WebWorkflowRole(ASP.NET Role)。下面我以WebWorkflowRole的方式作为权限控制例子做介绍,首先需要安装aspnetdb数据库(通过运行微软提供的aspnet_regsql.exe文件);App.config文件配置如下:
<? xml version = "1.0"encoding="utf-8" ?>
< configuration >
 < connectionStrings >
    < add name = "SqlServerConnection"
         connectionString = "Integrated Security = SSPI;server=localhost/SQLExpress;database=aspnetdb" />
 </ connectionStrings >
 < system.web >
    < roleManager enabled = "true"defaultProvider="SqlProvider">
      < providers >
        < add name = "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通过检查传入的登录名参数是否存在于流程角色列表的某个角色中来实现流程权限控制。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值