【问题标题】:asp.net mvc4 admin environment separate from public独立于公共的 asp.net mvc4 管理环境
【发布时间】:2018-04-16 01:20:33
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案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");
                    }
                }
    

    【讨论】:

      【解决方案2】:

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

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

      要利用角色,您可以创建一个custom action filter,您可以在其中检查用户角色并将访问权限限制为仅管理员角色用户

      【讨论】:

        猜你喜欢
        • 2021-03-28
        • 2021-05-20
        • 1970-01-01
        • 2013-06-14
        • 2018-05-13
        • 2014-08-19
        • 1970-01-01
        • 2015-10-17
        • 2016-05-04
        相关资源
        最近更新 更多