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