我有一个 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