C# AuthorizeAttribute继续重定向到/Account/Login
我正试图在ASP.NET MVC中对表单身份验证进行思考。MVC 5在我的特殊情况下,在重要的情况下 我的应用程序不使用密码,只使用电子邮件地址作为用户名 调试C# AuthorizeAttribute继续重定向到/Account/Login,c#,asp.net,asp.net-mvc,forms-authentication,authorize-attribute,C#,Asp.net,Asp.net Mvc,Forms Authentication,Authorize Attribute,我正试图在ASP.NET MVC中对表单身份验证进行思考。MVC 5在我的特殊情况下,在重要的情况下 我的应用程序不使用密码,只使用电子邮件地址作为用户名 调试Login方法时,我可以清楚地看到模型是有效的,并且我的(自定义)MembershipProvider会按预期验证用户。 然后它重定向到提供的returnUrl(为了测试,我在/Home/About上有一个authorized属性) 可悲的是,我立即返回到登录视图,因此很明显,我在整个过程中缺少了一个基本元素(而且,我必须承认,我对整个a
Login
方法时,我可以清楚地看到模型是有效的,并且我的(自定义)MembershipProvider
会按预期验证用户。然后它重定向到提供的
returnUrl
(为了测试,我在/Home/About上有一个authorized属性)
可悲的是,我立即返回到登录
视图,因此很明显,我在整个过程中缺少了一个基本元素(而且,我必须承认,我对整个auth/auth过程缺乏基本的了解,因为我很少玩弄它)
登录方法:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if(ModelState.IsValid && Membership.ValidateUser(model.Email, ""))
{
FormsAuthentication.SetAuthCookie(model.Email, model.RememberMe);
if (Url.IsLocalUrl(returnUrl))
{
return RedirectToLocal(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "Email address unknown");
}
return View(model);
}
Web.config的相关部分:
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
</system.web>
我没有看到什么?我应该在哪里查看?您正在使用FormsAuthentication设置cookie。如果您使用的是MVC5,他们会使用[Authorize]
属性删除该类型的身份验证
请在web.config中查找此项。如果要使用FormsAuthentication,请删除该行
<system.webServer>
<modules>
<remove name="FormsAuthentication" />
</modules>
</system.webServer>
您可能想阅读以下内容,了解Microsoft为何删除MVC5中的FormsAuthentication以及如何使用OWIN:此行为可能是由IIS Express的错误设置引起的
检查IISExpress
设置。
按项目上的F4
,或编辑项目文件*.csproj
将属性匿名身份验证
设置为已启用
李>
将属性Windows身份验证
设置为禁用
或编辑配置以:
<PropertyGroup>
<IISExpressAnonymousAuthentication />
<IISExpressWindowsAuthentication />
我不是专家(一点也不是),但是当逐步浏览代码时,视图模型有效吗?除此之外,我会使用isauthorized属性而不是authorize属性。@jbutler483是的,如果没有,就不会有任何重定向。但是在逐步浏览代码时,您还应该能够看到哪个部分失败了?太好了!非常感谢你!
<PropertyGroup>
<IISExpressAnonymousAuthentication />
<IISExpressWindowsAuthentication />