第 7 部分:成员身份和授权

作者 :Jon Galloway

MVC 音乐应用商店是一个教程应用程序,介绍并逐步说明如何使用 ASP.NET MVC 和 Visual Studio 进行 Web 开发。

MVC 音乐商店是一个轻量级的示例商店实现,用于在线销售音乐专辑,并实现基本的网站管理、用户登录和购物车功能。

本系列教程详细介绍了生成 ASP.NET MVC 音乐应用商店示例应用程序所执行的所有步骤。 第 7 部分介绍成员资格和授权。

访问我们网站的任何人都可以访问我们的 Store Manager 控制器。 让我们更改此项以限制对站点管理员的权限。

添加 AccountController 和视图

完整 ASP.NET MVC 3 Web 应用程序模板与 ASP.NET MVC 3 空 Web 应用程序模板之间的一个区别是空模板不包含帐户控制器。 我们将通过从完整的 ASP.NET MVC 3 Web 应用程序模板创建的新 ASP.NET MVC 应用程序复制几个文件来添加帐户控制器。

使用完整的 ASP.NET MVC 3 Web 应用程序模板创建新的 ASP.NET MVC 应用程序,并将以下文件复制到项目中的相同目录中:

  1. 复制 Controllers 目录中的 AccountController.cs
  2. 复制 Models 目录中的 AccountModels
  3. 在 Views 目录中创建一个帐户目录,并在 中复制所有四个视图

更改 Controller 和 Model 类的命名空间,使其从 MvcMusicStore 开始。 AccountController 类应使用 MvcMusicStore.Controllers 命名空间,AccountModels 类应使用 MvcMusicStore.Models 命名空间。

注意:这些文件也可在MvcMusicStore-Assets.zip下载中获取,我们在本教程开头从中复制了网站设计文件。 成员资格文件位于 Code 目录中。

更新后的解决方案应如下所示:

“解决方案资源管理器”窗格的屏幕截图,其中突出显示了“帐户控制器点 C S”、“帐户模型点 CS”和“/帐户/”文件夹中的文件。

使用 ASP.NET 配置站点添加管理用户

在网站中要求授权之前,我们需要创建一个具有访问权限的用户。 创建用户的最简单方法是使用内置的 ASP.NET 配置网站。

通过单击解决方案资源管理器中的图标启动 ASP.NET 配置网站。

解决方案资源管理器窗口的屏幕截图,其中地球和锤形图标在红色矩形中突出显示。

这会启动配置网站。 单击主屏幕上的“安全性”选项卡,然后单击屏幕中央的“启用角色”链接。

配置网站的屏幕截图,其中显示了“角色”部分,并在红色矩形中突出显示了“启用角色”链接。

单击“创建或管理角色”链接。

配置网站的屏幕截图,其中显示了“角色”部分,并在红色矩形中突出显示了“创建或管理角色”链接。

输入“管理员”作为角色名称,然后按“添加角色”按钮。

配置窗口的屏幕截图,其中显示了“新建角色名称”字段中的“管理员”,并用红色箭头突出显示。

单击“后退”按钮,然后单击左侧的“创建用户”链接。

配置网站的屏幕截图,其中显示了“用户”部分,并在红色矩形中突出显示了“创建用户”链接。

使用以下信息填写左侧的用户信息字段:

字段
用户名 管理员
密码 password123!
确认密码 password123!
电子邮件 (任何电子邮件地址都)
安全提示问题 (你喜欢的任何)
安全提示问题的答案 (你喜欢的任何)

注意:当然可以使用所需的任何密码。 默认密码安全设置要求密码长度为 7 个字符,并且包含一个非字母数字字符。

为此用户选择“管理员”角色,然后单击“创建用户”按钮。

配置网站的屏幕截图,其中显示了“角色”部分,其中勾选了“管理员角色”复选框,并突出显示了红色矩形。

此时,应会看到一条消息,指示已成功创建用户。

配置网站的屏幕截图,其中显示了一条消息,指出用户帐户创建已成功完成。

现在可以关闭浏览器窗口。

基于角色的授权

现在,可以使用 [Authorize] 属性限制对 StoreManagerController 的访问,并指定用户必须具有管理员角色才能访问 类中的任何控制器操作。

[Authorize(Roles = "Administrator")]
public class StoreManagerController : Controller
{
    // Controller code here
}

注意:[Authorize] 属性可以放在特定的操作方法上,也可以放在控制器类级别。

现在浏览到 /StoreManager 会显示“登录”对话框:

音乐商店网页的屏幕截图,其中显示了带有用户名和密码文本字段的登录对话框。

使用新的管理员帐户登录后,我们可以像以前一样转到“相册编辑”屏幕。