asp.net mvc4管理环境与公众分开

时间:2013-09-29 13:03:05

标签: asp.net asp.net-mvc-4

我正在编写一个新的asp.net mvc4 Web应用程序,它包含一个公共环境和一个独立的管理环境,现在我想知道执行此操作的最佳做​​法是什么。

我希望管理员登录mysite.com/admin。

2 个答案:

答案 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");
                }
            }