授权在MVC 4中不起作用的属性

时间:2014-01-19 06:42:04

标签: c# asp.net asp.net-mvc asp.net-membership

在我的应用程序中,我正在使用

 System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=2.0.0.0

作为我的会员提供者,这里是我的帐户控制器代码

[HttpPost]
        public ActionResult Login(string username,string password)
        {
            var result = Membership.ValidateUser(username, password);
            if(result)
            {

                var user = Membership.GetUser(username);
                var roles = Roles.GetRolesForUser(username);
                var isDistributor = roles.Any(x => x.ToUpper() == "DISTRIBUTOR");
                if (isDistributor) return RedirectToAction("ShowCurrentDistributor", "Distributor");
            }
            else
            {
                TempData["error"] = "Invalid login attempt";
            }
            return View();
        }

我的ShowCurrentDistributor操作代码:

 [HttpGet]
        [Authorize(Roles = "Distributor")]
        public ActionResult ShowCurrentDistributor()
        {

            var distributor = _distributer.GetDistributerbyEmail(User.Identity.Name);
            return View(distributor);
        }

但是当我调用 ShowCurrentDistributor 方法时,授权无效。它总是返回我的登录表单,即使我通过了有效角色的身份验证(分发服务器)。我的代码出了什么问题

1 个答案:

答案 0 :(得分:0)

成功验证后需要添加以下行:

FormsAuthentication.SetAuthCookie(username,true);

(原始海报的评论回答)