第 7 部分:成员资格和授权

作者:Jon Galloway

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

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

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

访问我们网站的任何人目前可以访问我们的 Microsoft Store Manager 控制器。 让我们对此进行更改,以限制对站点管理员的权限。

添加 AccountController 和 Views

完整 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. 在控制器目录中复制AccountController.cs
  2. 复制 Models 目录中的 AccountModels
  3. 在视图目录中创建帐户目录,并在其中复制所有四个视图

更改控制器类和模型类的命名空间,使其以 MvcMusicStore 开头。 AccountController 类应使用 MvcMusicStore.Controllers 命名空间,AccountModels 类应使用 MvcMusicStore.Models 命名空间。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

字段
用户名 管理员
密码
确认密码
电子邮件 (任何电子邮件地址都将正常工作)
安全提示问题 (不管你喜欢什么)
安全提示问题的答案 (不管你喜欢什么)

注释

  • 在上表中,密码已被忽略。
  • 当然,可以使用所需的任何密码。 默认密码安全设置要求密码长度为 7 个字符,并且包含一个非字母数字字符。

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

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

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

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

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

基于角色的授权

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

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

注意:[Authorize] 属性可以放置在特定操作方法以及控制器类的层次上。

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

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

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