asp.net mvc 3中基于角色的访问

asp.net mvc 3中基于角色的访问,asp.net,asp.net-mvc,asp.net-mvc-3,form-authentication,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Form Authentication,如何在asp.net mvc3应用程序中为用户分配角色 我试着做下面的事情 public ActionResult Login(LoginModel model) { if (ModelState.IsValid) { if (model.user_id == "admin" && model.password == "admin") { FormsAu

如何在asp.net mvc3应用程序中为用户分配角色

我试着做下面的事情

   public ActionResult Login(LoginModel model)
    {
        if (ModelState.IsValid)
        {
            if (model.user_id == "admin" && model.password == "admin")
            {
                 FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
                                                    1,
                                                    "admin",
                                                    DateTime.Now,
                                                    DateTime.Now.AddMinutes(30),
                                                    false,
                                                    "admin",
                                                    FormsAuthentication.FormsCookiePath);


                return JavaScript("window.location.replace('/Home/');");
            }

            else
            {
                return Content("Invalid User Id or Password.");
            }
        }
        else
        {
            return View(model);
        }
    }

现在,当我尝试在任何视图中获取用户角色时,它从不给我管理员角色。登录后如何分配角色?

为什么要访问视图中的用户角色?您不应该这样做,如果有任何特定需求,在从数据库获取角色后,请将角色存储在模型中,以便可以通过模型属性读取视图中的角色

如果不想更改模型,还可以将该属性添加到ViewBag。例如ViewBag.UserRoles=“admin”


我注意到的另一件事是,您也没有创建主体对象并将其分配给HttpContext.User,以便您可以基于此执行授权

你在做一些非常奇怪的事情。你为什么不回复意见?为什么不返回无效的模型?此外,您似乎没有正确设置窗体身份验证,因为您正在比较代码中的字符串而不是数据库。@Trickery:这只是为了测试。我将只从数据库中检索这些值。好吧,这不是表单身份验证的工作方式。我建议你跟着。它将向您展示如何正确使用MVC和身份验证。我使用的是MySql数据库。那又怎样?下载.NETMySQL提供程序并阅读其文档。您没有理由手动处理授权cookie。