在我的应用程序中,我正在使用
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 方法时,授权无效。它总是返回我的登录表单,即使我通过了有效角色的身份验证(分发服务器)。我的代码出了什么问题
答案 0 :(得分:0)
成功验证后需要添加以下行:
FormsAuthentication.SetAuthCookie(username,true);
(原始海报的评论回答)