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

时间:2013-02-02 06:38:38

标签: 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")
            {
                 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);
        }
    }

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

1 个答案:

答案 0 :(得分:0)

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

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

我注意到的另一件事是你也没有创建主体对象并将其分配给HttpContext.User,以便你可以根据它来执行授权。