1

我正在编写一个新的 asp.net mvc4 Web 应用程序,它由一个公共环境和一个单独的管理环境组成,现在我想知道这样做的最佳实践是什么。

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

4

2 回答 2

1

过去对我最有效的范例是设置管理区域。一旦你有了这个区域,这将使你能够清楚地将你的管理功能与应用程序的其余部分分开。IE/admin/users /admin/yourentities

为了将您的管理区域与应用程序的其余部分区分开来,您应该设置用户角色并根据角色限制管理员用户。这样,您就拥有了一张用户类型的数据库表、一张角色表,并且您拥有简单、可维护和可理解的结构。

要利用角色,您可以创建自定义操作过滤器,您可以在其中检查用户角色并将访问权限限制为仅管理员角色用户

于 2013-09-29T13:31:06.447 回答
1

可以像 bluetoff 所写的那样组织 - 添加区域。但是,如果您的管理部分不是很复杂,我更喜欢创建单独的控制器“Admin”并使用属性限制对它的访问:

[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");
                }
            }
于 2013-09-29T15:17:20.967 回答