C# AuthorizeAttribute继续重定向到/Account/Login

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

我正试图在ASP.NET MVC中对表单身份验证进行思考。MVC 5在我的特殊情况下,在重要的情况下

我的应用程序不使用密码,只使用电子邮件地址作为用户名

调试
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 />