none
工作流怎么设置用户权限呢 RRS feed

  • 问题

  • 工作流怎么设置用户权限呢,有这方面的例子吗?我是想设计个OA一样的软件,可以在流程中对部门和个人授权。
    2009年6月18日 7:46

答案

  • 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通过检查传入的登录名参数是否存在于流程角色列表的某个角色中来实现流程权限控制。
    转自:http://blog.csdn.net/artlife/
    • 已标记为答案 55555 2009年6月18日 9:55
    2009年6月18日 9:46

全部回复

  • 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通过检查传入的登录名参数是否存在于流程角色列表的某个角色中来实现流程权限控制。
    转自:http://blog.csdn.net/artlife/
    • 已标记为答案 55555 2009年6月18日 9:55
    2009年6月18日 9:46
  • Learning

    2009年7月9日 3:30