我正在 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/