角色管理2

本文介绍如何使用ASP.NET角色管理来控制网站用户访问权限。包括创建角色、分配用户、设置访问规则等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

This page is specific to
Microsoft Visual Studio 2005/.NET Framework 2.0

Other versions are also available for the following:
Microsoft Visual Studio 2008
Visual Web Developer
演练:通过角色管理网站用户

许多 ASP.NET 应用程序都涉及成员资格,它们对用户进行身份验证以允许用户访问受限制的资源(如仅允许成员访问的页)。如果应用程序将支持若干用户,或如果用户列表可能随时间的推移而更改,则请考虑建立角色以管理用户访问。“角色”是组(如管理人员、销售人员或成员组)的名称。建立角色后,可以将各个用户分配到角色。然后,可以向角色授予权限,该角色中的每个用户都继承已分配的权限。因此,角色是管理用户组的权限的有效方法。

通过此演练,您将学会如何执行以下任务:

  • 为应用程序建立角色。

  • 将用户分配到角色。

  • 创建规则(权限),以便针对不同规则有选择地授予或拒绝对页的访问。

  • 以编程方式确定用户是否属于特定角色以及当前用户属于哪个角色。

先决条件先决条件

若要完成本演练,您需要:

Visual Studio。

.NET Framework。

IIS 已在本地安装在您的计算机上。

SQL Server Express Edition 已在本地安装在计算机上。

标识各个用户的方式。

Note注意

在工作应用程序中,可以通过各种方法标识用户,例如通过他们的 Windows 用户帐户进行标识。但是在本演练中,用户将通过登录站点标识他们自身。因此,本演练要求您拥有一个配置为使用 ASP.NET 成员资格的站点。如果您有一个已配置了成员资格的站点,则可以使用该站点作为本演练的起点。

配置网站、成员资格和角色配置网站、成员资格和角色

在使用 ASP.NET 角色前,必须有一个可用的网站并配置该网站以启用成员资格和设置用户角色。如果您已完成主题,则可以使用在该演练中配置的网站。

如果还没有可用的网站,请使用下面的过程创建一个。否则,转到下一节“为仅允许成员访问的页创建文件夹”。

创建本地 IIS 网站

打开 Visual Studio。

在“文件”菜单上单击“新建网站”。

“新建网站”对话框随即出现。

在“Visual Studio 已安装的模板”之下选择“ASP.NET 网站”。

在“位置”列表框中,选择“文件系统”。

单击“浏览”,然后为应用程序选择一个目录(如 C:\RolesWebSite)。

在“语言”框中,单击您想使用的编程语言。

您选择的编程语言将是网站的默认语言,但您可以为每个页面分别设置编程语言。

在“新建网站”对话框中单击“确定”。

Visual Web Developer 创建该网站和一个名为 Default.aspx 的新页。

为仅允许成员访问的页创建文件夹

为了使用角色,需要创建两个文件夹“MemberPages”“GuestPages”,可以在这两个文件夹中保存具有受限制访问权限的页。

Note注意

如果您在重新使用成员资格演练中的网站,则可能已拥有此文件夹,可以跳过下面的过程步骤 1。

创建具有受限制访问权限的文件夹

在“解决方案资源管理器”中,右击“网站根目录”,单击“新建文件夹”,然后将该文件夹命名为“MemberPages”

此文件夹将包含一个仅部分用户能够访问的页。

右击“网站根目录”,单击“新建文件夹”,然后将该文件夹命名为“GuestPages”

此文件夹将包含一个所有登录用户都能访问的页(匿名用户不能访问)。

为使用成员资格和角色配置网站

创建基本的网站后,可以配置该网站以使用成员资格和角色。

为使用成员资格和角色配置网站

在“网站”菜单中,单击“ASP.NET 配置”。

选择“安全”选项卡,单击“使用安全设置向导按部就班地配置安全性”的链接,然后单击“下一步”。

继续向导的步骤 2,并选择“通过 Internet”选项。

向导会显示一个页,您可以在其中选择网站将使用的身份验证方法。

此选项指定应用程序将使用 Forms 身份验证,其中用户将使用在本演练中稍后创建的登录页登录到应用程序。

单击“下一步”。

该向导会显示一条消息,表明将使用“高级提供程序设置”存储用户信息。您的应用程序将使用默认提供程序,该提供程序将成员资格信息存储在网站的 App_Data 文件夹下的 SQL Server 速成版数据库文件中。

再单击“下一步”。

在“步骤 4:定义角色”中,选择“为此网站启用角色复选框,然后单击下一步”。

系统提示时,创建两个角色“members”“guests”,然后单击“下一步”。

在“步骤 5: 添加新用户”中,创建名为“member1”“guest1”“memberGuest”的三个用户。

您可以根据需要指定任意强密码,但一定要记住密码。密码必须至少为 7 个字符,并且其中至少有一个字符为非字母数字字符。对于电子邮件地址,请使用自己的邮件地址。(本演练中将不会发送电子邮件。)

Note注意

暂时不要关闭网站管理工具。

正在创建的网站将允许用户根据他们的角色获得对不同页的访问。因此需要创建一些访问规则,确定哪些角色能够访问哪些文件夹。

设置站点文件夹的访问规则

在网站管理工具的安全向导中,单击“下一步”。

“步骤 6: 添加新访问规则”会显示一个页,您可以在该页中创建规则,用于确定哪些角色(或用户)可以访问网站中的页。

在“为此规则选择一个目录”下面,展开根节点,然后单击“GuestPages”。

在“规则应用于”之下选择“匿名用户”。

在“权限”之下选择“拒绝”。

您所创建的规则会拒绝匿名用户(即没有登录的用户)的访问。

单击“添加此规则”。

新规则显示在页底部的网格中。当用户请求“GuestPages”目录中的页时,将按顺序从上到下检查这些规则,以确定是否允许用户访问该页。如果用户没有登录,则不会显示此文件夹中的页。

在“为此规则选择一个目录”下,单击“MemberPages”。

在“规则应用于”下,选择“角色”,然后在下拉列表中单击“成员”。

在“权限”之下选择“允许”。

所创建的规则将向“members”角色中的所有用户授予对“MemberPages”文件夹的访问权限。

单击“添加此规则”。

在“为此规则选择一个目录”下,单击“MemberPages”。

在“规则应用于”之下选择“所有用户”。

在“权限”之下选择“拒绝”。

单击“添加此规则”。

“MemberPages”文件夹的第二个规则确保除了“members”角色中的用户外,其他任何用户都不能访问该文件夹。规则按照在该网格中的显示顺序从上到下进行处理。

第一个规则(“允许”)向名为“members”的角色中的用户授予访问权限。第二个规则(“拒绝”)拒绝其他所有用户的访问权限。可以根据应用程序需要创建任意数目的“允许”和“拒绝”规则。当用户请求“MemberPages”目录中的页时,将按从上到下的顺序应用这些规则,以确定是否允许用户访问该页。

单击“完成”返回到“安全”选项卡。

Note注意

暂时不要关闭网站管理工具。

将用户分配到角色

必须执行最后一个配置步骤:向角色分配已创建的用户。

将用户分配到角色

在网站管理工具的“安全”选项卡上,在“用户”下单击“管理用户”。

在“guest1”所在的行中,单击“编辑角色”。

“角色”框中填充了一列可用的角色。

选择“guests”复选框以将用户“guest1”分配给角色“guests”。

在“member1”所在的行中,单击“编辑角色”,然后将用户“member1”分配给角色“members”。

使用同样的方法将用户“memberGuest”分配给“guests”和“members”角色。

关闭网站管理工具,然后执行下面的步骤:

在解决方案资源管理器中,单击刷新图标。

在“网站”菜单上单击“ASP.NET 配置”以重新启动网站管理工具。

这将确保关闭由网站管理工具使用的与成员资格数据库的连接。

再次关闭网站管理工具。

添加具有受限制访问权限的页添加具有受限制访问权限的页

若要测试成员资格和角色设置,需要创建一种用户登录方法以便标识用户。还必须创建一些网页,以便测试已创建的访问规则。

为所有用户创建默认页

切换到 Visual Studio。

打开或切换到 Default.aspx 页,然后切换到“设计”视图。

如果没有 Default.aspx 页,请向网站的根目录添加一个 Default.aspx 页。

Note注意

确保将该页命名为 Default.aspx;此名称稍后将在本演练中使用。

添加一个包含文本(如“欢迎!”)的标题

在“工具箱”中,从“登录”组中将一个 控件拖动到页上。

如果用户尚未登录,则在单击时 LoginStatus 控件时会将该用户转到 Login.aspx 页。

从“工具箱”的“登录”组中,将 控件拖动到页面上。将“FormatString”属性设置为“您好 {0}。”

如果用户已登录,LoginName 控件将显示用户的名称。

在“工具箱”中,从“标准”组中将 控件拖动到页面上。在 HyperLink 控件的“属性”面板中,将 属性设置为“来宾和成员”,并将 属性设置为“~/GuestPages/Guests.aspx”

Note注意

在本演练后面的部分中将创建“Guests.aspx”页。

在“工具箱”中,从“标准”组中将另一个 HyperLink 控件拖动到页面上。在 HyperLink 控件的“属性”面板中,将 Text 属性设置为“成员”,并将 NavigateUrl 属性设置为“~/MemberPages/Members.aspx”

Note注意

在本演练后面的部分中将创建“Members.aspx”页。

现在您有了一个对所有用户可用的主页。用户可以从这个主页链接到其他页(其中的某些页是受限制的)。下一步是创建一个简单的登录页。

创建登录页

在解决方案资源管理器中右击网站的根文件夹,然后选择“添加新项”。将一个名为“Login.aspx”的“Web 窗体”添加到网站中。

在 Login.aspx 页中,切换到“设计”视图。

在“工具箱”中,从“登录”组中将 控件拖动到页面上。

Login 控件的“属性”面板中,将 属性设置为“~/Default.aspx”

最后,需要创建一些表示站点的受限制内容的页。

创建受限制的页

在“解决方案资源管理器”中,右击“GuestPages”文件夹,单击“添加新项”,然后将一个名为“Guests.aspx”的“Web 窗体”添加到此文件夹中。

切换到“设计”视图,并在 Guests.aspx 页中添加一个标题,如“欢迎访问来宾页!”

在“工具箱”中,从“标准”组中将 HyperLink 控件拖动到页面上。在 HyperLink 控件的“属性”面板中,将 Text 属性设置为“主页”,并将 NavigateUrl 属性设置为“~/Default.aspx”

在“解决方案资源管理器”中,右击“MemberPages”文件夹,选择“添加新项”,然后添加一个名为“Members.aspx”的“Web 窗体”。

切换到“设计”视图,并在“Members.aspx”页中添加一个标题,如“欢迎访问成员页!”

在“工具箱”中,从“标准”组中将 HyperLink 控件拖动到页面上。

HyperLink 控件的“属性”面板中,将 Text 属性设置为“主页”,并将 NavigateUrl 属性设置为“~/Default.aspx”

不必为了限制对这些页的访问而在这些页中添加任何代码。对这些页的访问是受限制的,因为它们位于受访问规则保护的文件夹中。

测试角色测试角色

现在可以对站点进行测试了。

测试角色

切换到“Default.aspx”页,然后按 Ctrl+F5 运行该页。

单击“来宾和成员”。

您会被重定向到“Login.aspx”页,因为您正尝试访问不允许匿名用户访问的页。

作为“guest1”(属于角色“guests”)登录。

在成功登录后,您会被重定向到“Guests.aspx”页。

单击“主页”返回到“Default.aspx”页。

“Default.aspx”页会在您放置 LoginName 控件的位置显示文本“您好,guest1”。此外,LoginStatus 控件已将文本从“登录”更改为“注销”,因为您现在已经作为“guest1”登录。

单击“来宾和成员”。

这次您会直接转到 Guests.aspx 页,因为您已作为属于角色 guests 的用户登录。

单击“主页”返回到“Default.aspx”页。

单击“成员”。

您会被重定向到“Login.aspx”页,因为“guest1”没有对“Members.aspx”页的访问权限。

请作为“member1”“memberGuest”登录。

您会被重定向到“Members.aspx”页,因为您现在已作为属于角色“members”的用户登录。

单击“主页”返回到“Default.aspx”页。

该页现在会反映您的新登录名。

后续步骤后续步骤

本演练阐释 ASP.NET 角色管理的基本功能。您可能希望体验一下角色管理的其他功能。例如,您可能希望:

使用 Windows 角色而不是使用在成员资格系统中创建的自定义角色。

以编程方式使用角色。有关详细信息,请参见。

或者,可以创建自定义的提供程序,以便将现有的或自定义的数据存储区用于成员资格和角色信息。有关更多信息,请参见。

将访问规则应用于在网站的导航结构中显示的链接。有关更多信息,请参见。

转载于:https://www.cnblogs.com/pkurain/archive/2007/11/15/961012.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值