我正在编写一个新的asp.net mvc4 Web应用程序,它包含一个公共环境和一个独立的管理环境,现在我想知道执行此操作的最佳做法是什么。
我希望管理员登录mysite.com/admin。
答案 0 :(得分:1)
过去最适合我的范例是设置管理员area。一旦您拥有该区域,这将使您能够清楚地将管理功能与应用程序的其余部分分开。即/admin/users /admin/yourentities
要将管理区域与应用程序的其余部分区分开来,您应该根据角色设置用户角色并限制管理员用户。这样,您就拥有一个用户类型数据库表,一个Roles表,并且您具有简单,可维护且易于理解的结构。
要利用这些角色,您可以创建custom action filter,您可以在其中检查用户角色并限制只能访问管理员角色用户
答案 1 :(得分:1)
可能会像bluetoff那样编写 - 添加区域。但是如果您的管理部分不是很复杂,我只是想创建单独的控制器“Admin”并限制对Attribute的访问:
[Authorize(Roles = "admin")]
public class AdminController : Controller
如果用户处于“admin”角色,则在LogOn方法中添加重定向到AdminController:
public ActionResult LogOn(LogOnModel model)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
if (Roles.IsUserInRole(model.UserName, "admin"))
{
return Redirect("Index", "Admin");
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "Error");
}
}