使用自定义的成员资格提供程序,毕竟是需要不少的工作量的,实际上,大多数应用程序完全可以使用 SqlMembershipProvider,我们要做的只是做些扩展,我们将以一个示例来说明。
示例应用程序中需要指明一个用户所属的角色、以及该用户所属的地域。角色管理器(RoleProvider)提供了角色的管理,但由于某些原因,我们得用自己的角色管理。
首先,我们需要额外添加一个或多个表,以明确用户名与角色、地域的对应关系。
这个(些)表可按我们的实际需求而建。
然后,我们在创建用户时将 CreateUserWizard 模板化。
<asp:CreateUserWizard ID="CreateUserWizard1" runat="server"
RequireEmail="False" LoginCreatedUser="False"
oncreateduser="CreateUserWizard1_CreatedUser"
ContinueDestinationPageUrl="~/UserManagement.aspx">
<WizardSteps>
<asp:WizardStep ID="WizardStep1" runat="server" StepType="Start" Title="选择新用户角色与所属地域">
<div>
请选择新用户所属角色:
<asp:DropDownList ID="_roles" runat="server" DataSourceID="SqlDataSource_role"
DataTextField="roleName" DataValueField="roleId">
</asp:DropDownList>
</div>
<div>
请选择新用户所属地域:
<asp:DropDownList ID="_districts" runat="server" DataSourceID="SqlDataSource_district"
DataTextField="districtName" DataValueField="districtCode">
</asp:DropDownList>
</div>
</asp:WizardStep>
<asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server" />
<asp:CompleteWizardStep ID="CompleteWizardStep1" runat="server" />
</WizardSteps>
</asp:CreateUserWizard>
可以看出,我们在创建用户向导中多添加了一个步骤,选择用户所属的角色和所属的地域。
最后,我们对 CreateUserWizard 控件的 oncreateduser 事件写代码。
oncreateduser 是用户创建成功的事件,也就是说用户创建成功后,我们把角色和地域关联写在我们第一步建立的表中。
- CreateUserWizard1.UserName 获得用户名。
- _roles.SelectedValue 获得角色。
- _districts.SelectedValue 获得地域。