Owin 身份验证创建一个重定向循环



我有一个 ASP.NET 4.6 WebForms应用程序,它利用Identity 2.1包进行注册和身份验证系统。它使用 Owin 身份验证,而不是 Forms 或 Windows。

我的尝试是不允许匿名用户查看网站的任何页面,并将他们重定向到登录页面。这就是为什么我在我的 Web.config 中添加了以下内容(根据这篇文章):

<system.web>
    <authorization>
      <deny users="?"/>
    </authorization>
    <authentication mode="None" />
</system.web>
<location path="~/Account/Login.aspx">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>

从那时起,在浏览器中运行应用程序时,我总是得到一个重定向循环。我为MVC找到了不同的解决方案,但没有针对WebForms的解决方案。

可能是什么原因以及如何删除它?

这是我在 Startup.Auth.cs 文件中的配置方法:

public void ConfigureAuth(IAppBuilder app)
    {
        app.CreatePerOwinContext(ApplicationDbContext.Create);
        app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
        app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);
        app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/Account/Login.aspx"),
            CookieSecure = CookieSecureOption.Always,
            Provider = new CookieAuthenticationProvider
            {
                OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
                    validateInterval: TimeSpan.FromMinutes(30),
                    regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
            }
        });
    }

将身份验证模式设置为"表单"并将服务器上的身份验证设置为Formsauthentication&Anonymous。

等等,我寻找另一个解决方案的:)

<authentication mode="Forms" />
        <authorization>
            <allow users="*" />
        </authorization>



<system.webServer>
    <modules>
        <remove name="FormsAuthentication" />
    </modules>
</system.webServer>

并删除" <deny users="?"/> "行

更改位置路径

<location path="~/Account/Login.aspx">

<location path="Account/Login.aspx">

并删除友好网址

将此 XML 添加到您的 Accounts/Web.Config

<system.web>
     <authorization>
         <allow users="*"/>
    </authorization>
</system.web>

这为我解决了问题。

请注意,这是"帐户"文件夹中的 Web.Config

我将这两种配置都添加到我的 web.config 中

<authentication mode="None"/>
<authorization>
  <deny users="?" />
</authorization>

<location path="Login.aspx">
    <system.web>
      <authorization>
        <allow users="?" />
      </authorization>
    </system.web>
</location>
<modules>
  <remove name="FormsAuthentication"/>
</modules>

您需要将登录.aspx更改为您自己的页面,例如帐户/登录.aspx

相关内容

  • 没有找到相关文章