ASP.NET Web API教程 创建Admin视图详细介绍

网络编程 2025-04-24 12:52www.168986.cn编程入门

现在,让我们转向客户端,并创建一个能够利用Admin控制器数据的页面。这个页面将通过AJAX请求与控制器交互,使用户能够创建、编辑或删除产品。

在解决方案资源管理器中,展开Controllers文件夹,并打开名为HomeController.cs的文件。这个文件包含了一个MVC控制器。接下来,我们将在这个控制器中添加一个名为“Admin”的方法。

代码的写法如下:

```csharp

public ActionResult Admin()

{

// 构建API的URL

string apiUri = Url.HttpRouteUrl("DefaultApi", new { controller = "admin" });

// 将API的URL存储在ViewBag中,以供后续使用

ViewBag.ApiUrl = new Uri(Request.Url, apiUri).AbsoluteUri.ToString();

// 返回视图

return View();

}

```

HttpRouteUrl方法用于创建Web API的URI。我们将其存储在ViewBag中,以便在视图中使用。

接下来,将光标放置在Admin动作方法内部,然后右击并选择“添加视图”。这将弹出“添加视图”对话框。

在“添加视图”对话框中,将视图命名为“Admin”。选中“创建强类型视图”的复选框,并在“模型类”选项中选择“Product (ProductStore.Models)”。保留其他选项为默认值。

点击“添加”后,将在Views/Home文件夹下创建一个名为Admin.cshtml的文件。打开此文件,并添加以下HTML代码,该HTML代码定义了页面的基本结构,但尚未实现功能。

产品管理界面与Admin页面链接构建指南

让我们先深入了解一个关于产品管理的界面设计。在这个精心设计的页面中,左侧布局展示了产品的详细信息输入界面。每一个产品都有一个独特的Product ID,你可以在此处输入或查看。紧接着,你可以为每一个产品填写名称、价格以及实际成本。特别设计的是,每个产品条目末尾还有两个按钮:“Update”(更新)和“Delete Item”(删除条目),方便你对产品信息做出实时调整。

在页面的右侧,有一个醒目的标题“Add New Product”(添加新产品)。下方是一个表单,你可以在此处输入新产品的详细信息。完成填写后,点击“Save”按钮,新的产品信息就会被保存。

接下来,我们将如何创建一个链接,通向Admin页面。在“解决方案资源管理器”中,展开Views文件夹,然后进入Shared文件夹。你会找到一个名为_Layout.cshtml的文件。打开这个文件,你会看到一个带有id为“menu”的ul元素。在这个元素内,有一个链接到Admin视图的动作链接。

在这个示例项目中,除了将“Your logo here”这个字符串替换为其他内容这样的装饰性改动之外,我还进行了其他一些微调。这些调整并没有影响到应用程序的功能性。你可以下载这个项目并对比文件内容。

现在,让我们运行这个应用程序。在首页的顶部,你会看到一个“Admin”链接。点击这个链接,你将进入Admin页面。这个页面布局清晰,一目了然,就像下面展示的样子:

这里是你对产品的所有信息进行管理的地方。你可以查看已存在的产品信息、编辑它们、添加新产品,或者删除不再需要的条目。所有的操作都异常直观和便捷。只需要点击相应的按钮或链接,你就可以轻松实现这些功能。特别是Admin页面,作为整个系统的管理中心,提供了全面的产品管理功能,让你轻松掌控你的产品数据库。

这个设计友好的界面和强大的功能将让你的产品管理变得轻松而高效。不论是添加新产品、更新产品信息还是删除不再需要的条目,都只需简单的点击即可完成。现在,就让我们一起这个强大的产品管理页面吧!Admin页面设计草图已经呈现眼前(如图2-22所示)。这个页面目前尚未具备任何交互功能。在下一个章节中,我们将借助Knockout.js的力量,为其注入生命力,创建一个动态的用户界面。

为了确保只有特定用户才能访问Admin页面,我们需要为其添加授权功能。目前,任何访问网站的人都可以进入Admin页面,这显然不符合我们的安全需求。我们需要改变这一现状,只允许管理员访问。

让我们添加一个新的角色——“管理员”,并创建一个相应的管理员用户。在解决方案资源管理器中,展开Filters文件夹,并打开名为InitializeSimpleMembershipAttribute.cs的文件。找到SimpleMembershipInitializer构造函数。在WebSecurity.InitializeDatabaseConnection的调用之后,我们需要添加以下代码:

```csharp

const string adminRole = "Administrator";

const string adminName = "AdministratorUser"; // 使用真实的用户名替换此处

if (!Roles.RoleExists(adminRole)) {

Roles.CreateRole(adminRole); // 创建管理员角色

}

if (!WebSecurity.UserExists(adminName)) { // 检查是否存在管理员用户

WebSecurity.CreateUserAndAccount(adminName, "password"); // 创建管理员用户并设置密码

Roles.AddUserToRole(adminName, adminRole); // 将新用户添加到管理员角色中

}

```

这是一个快速而直接的方式,用于添加“管理员”角色并为该角色创建用户。接下来,我们需要在控制器层面对Admin页面进行授权控制。在解决方案资源管理器中,展开Controllers文件夹,并打开HomeController.cs文件。在Admin方法上添加Authorize属性。这样,只有经过授权的用户才能访问Admin页面。这个改动将极大地提升我们网站的安全性。将Authorize注解属性添加到Admin方法的注释中,代码示例如下:

在AdminController.cs文件中,为了增强安全性和权限控制,我们需要在特定的方法上添加Authorize注解属性。针对管理员权限的方法,可以像下面这样进行标注:

```csharp

[Authorize(Roles = "Administrator")]

public ActionResult Admin()

{

return View();

}

```

同样地,如果你想对整个AdminController类进行授权限制,确保只有特定角色(如管理员)才能访问该类中的方法,你可以在类定义上添加Authorize属性:

```csharp

[Authorize(Roles = "Administrator")]

public class AdminController : Controller

{

// ... 控制器中的其他代码

}

```

在MVC和Web API中,Authorize属性扮演着重要的角色,用于控制哪些用户能够访问特定的页面或API端点。需要注意的是,MVC和Web API中的Authorize属性位于不同的命名空间。MVC使用的是System.Web.Mvc.AuthorizeAttribute,而Web API则使用System.Web.Http.AuthorizeAttribute。

通过上述设置,只有被授权为管理员角色的用户才能查看Admin页面。任何发送到Admin控制器的HTTP请求都必须包含有效的身份验证cookie。如果没有该cookie,服务器会返回一个HTTP 401(未授权)的响应。这一行为可以通过使用Fiddler等工具发送一个GET请求到

在完成了上述配置后,你的应用程序将具备强大的授权机制,确保只有具备相应权限的用户才能访问敏感的管理页面或API端点。这有助于提升应用程序的安全性并保护重要数据不被未经授权的访问。

最终,记得在你的应用程序中正确配置身份验证系统,以便与授权属性协同工作,确保安全性的实施。

上一篇:Laravel中9个不经常用的小技巧汇总 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by