
图 16:“RoleGroup Collection Editor”(角色组集合编辑器)要求手动输入角色。您也可以为角色编组,这样多个组可以共享同样的模板界面。
在“Design”(设计)视图中,LoginView 控件现在将角色列表显示为模板选项:

图 17:“HTML”视图将更新,显示您为每个角色所设计的所有模板。
从以下 HTML 源文件中可以看出,“Admin”(管理)和“Member”(成员)角色使用了新的内容模板。在验证以前仍将使用 <anonymoustemplate>,但验证以后,将使用与某个用户角色匹配的第一个模板。如果未找到匹配项,默认使用 <loggedintemplate> 设置。
<asp:loginview id="lvMenu" runat="server">
<anonymoustemplate>
<asp:loginstatus id="anonLoginStatus" runat="server">
</asp:loginstatus>
</anonymoustemplate>
<rolegroups>
<asp:rolegroup roles="Admin">
<contenttemplate>
<tr>
<td class="OtherTabs">
<asp:hyperlink id="adminHome" runat="server"
navigateurl="~/default.aspx">Home</asp:hyperlink>
| </td>
<td class="OtherTabs">
<asp:hyperlink id="adminAbout" runat="server"
navigateurl="~/about.aspx">About</asp:hyperlink>
| </td>
<td class="OtherTabs">
<asp:hyperlink id="adminAdmin" runat="server"
navigateurl="~/admin/manageMembers.aspx">Admin
</asp:hyperlink> | </td>
<td class="OtherTabs">
<asp:loginstatus id="adminLoginStatus" runat="server">
</asp:loginstatus>
</td>
</tr>
</contenttemplate>
</asp:rolegroup>
<asp:rolegroup roles="Member">
<contenttemplate>
<tr>
<td class="OtherTabs">
<asp:hyperlink id="memberHome" runat="server"
navigateurl="~/default.aspx">Home</asp:hyperlink>
| </td>
<td class="OtherTabs">
<asp:hyperlink id="memberAbout" runat="server"
navigateurl="~/about.aspx">About</asp:hyperlink>
| </td>
<td class="OtherTabs">
<asp:loginstatus id="memberLoginStatus" runat="server">
</asp:loginstatus>
</td>
</tr>
</contenttemplate>
</asp:rolegroup>
</rolegroups>
<loggedintemplate>
<tr>
<td class="OtherTabs">
<asp:hyperlink id="authHome" runat="server"
navigateurl="~/default.aspx">Home</asp:hyperlink>
| </td>
<td class="OtherTabs">
<asp:hyperlink id="authAbout" runat="server"
navigateurl="~/about.aspx">About</asp:hyperlink>
| </td>
<td class="OtherTabs">
<asp:loginstatus id="authLoginStatus" runat="server">
</asp:loginstatus>
</td>
</tr>
</loggedintemplate>
</asp:loginview>
将按照显示的顺序分析这些模板,并将第一个匹配的角色用作该登录控件的内容。这意味着必须仔细地为角色安排适当的顺序。我的示例程序的结果是将新的“Admin”(管理)菜单项限制为只对分配了管理角色的用户显示。
我们还可以指定 <authorization> 规则拒绝或允许特定的角色,从而实现使用角色来控制对其他资源的访问。可以使用 <location> 标记在 web.config 文件的应用程序级别实现这一点,或是将 web.config 文件添加到受保护的子目录。我在示例程序的 /admin 目录下放置了以下 <authorization> 设置,只允许那些指定为管理角色的用户访问:
<authorization>
<allow roles="Admin" />
<deny users="*" />
</authorization>
现在,可以创建一些管理页面来管理成员,并根据 ASP.NET Whidbey 提供的成员身份 API 来编写代码。
成员身份和角色提供程序
至此,我所显示的大多数内容都是基于使用新的安全控件。但是,有一些基础组件允许我们直接管理用户和角色。这些组件提供了从数据库访问层抽象而来的层。为了进行演示,我将在 /admin 目录下创建一个新的内容页面 (manageMembers.aspx)。该页面将显示电子通讯成员的列表,并提供了一个中心界面,用于添加、编辑或删除电子通讯成员。
我将“DataView”(数据视图)控件拖放到页面中,目的是使用用户列表填充此控件。Page_Load 事件包含了利用内部成员身份对象检索所有用户的代码。新的 Membership 类的方法和属性提供了对默认创建的成员身份数据库的直接访问。例如,
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




