ASP.NET MVC自定义授权:AuthorizeAttribute

时间:2012-04-27 09:42:28

标签: asp.net-mvc authorization roles

我正在关注本教程link

我有一个表用户 { iduser,用户,通行证,角色}

我正在使用此用户:string[] users = db.users.Select(t => t.user).ToArray();

而不是:string[] users = Users.Split(',');可以吗?

我的问题在于角色:SiteRoles role = (SiteRoles)httpContext.Session["role"];

问:我在哪里为用户存储角色?

我的简化帐户控制器:

    [HttpPost]
    public ActionResult Login(LoginModel model)
    {
        HeliosEntities db = new HeliosEntities();       
        if (ModelState.IsValid)
        {
            bool userok = db.users.Any(t => t.user == model.UserName && t.pass == model.Password);
            if (userok == true) 
            {
                FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
                return RedirectToAction("Index", "Home");
            }
            {
                ModelState.AddModelError("", "Incorect password or user!");
            }
        }

        return View();
    }

1 个答案:

答案 0 :(得分:0)

快速浏览一下上面的链接就会发现它正在从会话中获得用户的角色:

(SiteRoles)httpContext.Session["role"];

因此您需要在用户登录时设置会话值,例如:

var userRole = Roles.Admin | Roles.User;
httpContext.Session["role"] = role;

我不知道您在哪里存储有关用户所处角色的信息。