asp.net-mvc - 如何在两个区域使用一个默认成员(member)提供商?

标签 asp.net-mvc asp.net-mvc-3 membership-provider

我正在 MVC 3 中构建一个网上商店。它使用默认的成员(member)资格提供商进行结帐,因此用户应首先注册/登录,然后才能进行购买。这很好用。现在我正在构建一个管理区域来管理表单上使用的所有产品、类别和所有下拉值。为此,管理员需要登录。我最好想使用相同的成员(member)提供商。对此的最佳实践是什么?我尝试在管理区域中放置一个单独的 AccountController 和 View ,但是当我浏览到 .../admin 时,它会将我路由到网店的登录页面而不是管理区域。是否可以在项目根目录中仅使用 1 个 AccountController,然后评估 RouteData 并从管理区域 View 返回正确的登录 View ?或者这是“未完成”。

我想以最好、最干净的方式做到这一点。

谢谢

最佳答案

没有必要使用两个帐户 Controller ,毕竟它们具有相同的逻辑。

您可以使用角色提供程序并根据角色设置对区域的访问权限。

[Authorize(Roles = "Administrators")]
public class AdminController : Controller
{
}

编辑:

为了使用不同的布局,在管理区域的 _ViewStart.cshtml 内或管理区域 AccountController 正在使用的 View 内,您需要设置哪种布局您将使用:

@{
    Layout = "~/Areas/Admin/Views/Shared/_AdminLayout.cshtml";
}

对于重定向,请检查 AdminAreaRegistration.cs 内的路由,并确保您重定向到区域 Controller :

return RedirectToAction("LogOn", "Admin", new { area = "Admin" });

关于asp.net-mvc - 如何在两个区域使用一个默认成员(member)提供商?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7969897/

相关文章:

asp.net-mvc - 为 JsonResult 调用 @Html.Action 会更改我在父模板中的响应类型

c# - 为什么当我调用 EditorForModel 时我的编辑器模板被忽略?

html - 如何在 MVC3 View (Razor)中将动态字符串呈现为 html

c# - 应用重启后首次初始​​化 Membership.Provider 时出错

javascript - 将 sendAsBinary 与 ASP.Net MVC 结合使用

.NET MVC 购物车

c# - 无法使用集合初始值设定项初始化类型 "x",因为它未实现 'System.Collections.IEnumerable'

c# - 在 MVC3 中处理创建和更新复杂数据类型的最佳方法是什么?

asp.net - Multi-Tenancy 成员资格提供程序 ASP.NET MVC

c# - 更改 ASP.NET 标识消息