如何在两个区域使用一个默认会员提供商?

时间:2011-11-01 16:52:11

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

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

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

感谢名单

1 个答案:

答案 0 :(得分:3)

不需要使用两个帐户控制器,毕竟它们具有相同的逻辑。

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

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

修改

要在管理区域的_ViewStart.cshtml内或管理区AccountController正在使用的视图内使用不同的布局,您需要设置要使用的布局:

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

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

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