ASP.NET Core 2.0 Identity 中 Cookies.ApplicationCookie.AutomaticChallenge = false 的替代品是什么?
What is the replacement for Cookies.ApplicationCookie.AutomaticChallenge = false in ASP.NET Core 2.0 Identity?
我从 ASP.NET Core 1.1 升级到 2.0,现在 401 未经授权的响应已更改为 302 重定向响应。这以前是我在 1.1 中遇到的问题,并通过以下代码得到缓解:
services.AddIdentity<User, IdentityRole>(identityOptions =>
{
identityOptions.Cookies.ApplicationCookie.AutomaticChallenge = false;
})
但是,identityOptions
上不再有 Cookies
属性。
我也尝试添加以下内容(同时请注意,我之前在我的应用程序中不需要此扩展方法):
services.AddCookieAuthentication(cookieAuthenticationOptions => {
cookieAuthenticationOptions.LoginPath = ""; // also tried null
cookieAuthenticationOptions.AccessDeniedPath = ""; // also tried null
cookieAuthenticationOptions.LogoutPath = ""; // also tried null
});
该代码似乎对默认重定向路径或行为没有影响。我怎样才能在 Core 2.0 中阻止这些重定向?
如 https://github.com/aspnet/Announcements/issues/262 中所述,您现在必须使用 services.AddAuthentication()
扩展在全局级别配置默认方案处理程序。
为了防止 Identity 注册的 cookie 处理程序处理挑战,请将 DefaultChallengeScheme
替换为对应于不同处理程序(例如 JWT 承载处理程序)的方案。
services.AddIdentity<User, IdentityRole>();
services.AddAuthentication(options =>
{
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
});
如果 - 无论出于何种原因 - 选择不同的处理程序不适合您,那么您将不得不使用 services.ConfigureApplicationCookie()
注册自定义 CookieAuthenticationEvents.(On)RedirectToLogin
事件以更改身份 returns一个"unauthorized response".
这是一个返回 401 响应的示例:
services.ConfigureApplicationCookie(options =>
{
options.Events.OnRedirectToLogin = context =>
{
context.Response.StatusCode = 401;
return Task.CompletedTask;
};
});
我从 ASP.NET Core 1.1 升级到 2.0,现在 401 未经授权的响应已更改为 302 重定向响应。这以前是我在 1.1 中遇到的问题,并通过以下代码得到缓解:
services.AddIdentity<User, IdentityRole>(identityOptions =>
{
identityOptions.Cookies.ApplicationCookie.AutomaticChallenge = false;
})
但是,identityOptions
上不再有 Cookies
属性。
我也尝试添加以下内容(同时请注意,我之前在我的应用程序中不需要此扩展方法):
services.AddCookieAuthentication(cookieAuthenticationOptions => {
cookieAuthenticationOptions.LoginPath = ""; // also tried null
cookieAuthenticationOptions.AccessDeniedPath = ""; // also tried null
cookieAuthenticationOptions.LogoutPath = ""; // also tried null
});
该代码似乎对默认重定向路径或行为没有影响。我怎样才能在 Core 2.0 中阻止这些重定向?
如 https://github.com/aspnet/Announcements/issues/262 中所述,您现在必须使用 services.AddAuthentication()
扩展在全局级别配置默认方案处理程序。
为了防止 Identity 注册的 cookie 处理程序处理挑战,请将 DefaultChallengeScheme
替换为对应于不同处理程序(例如 JWT 承载处理程序)的方案。
services.AddIdentity<User, IdentityRole>();
services.AddAuthentication(options =>
{
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
});
如果 - 无论出于何种原因 - 选择不同的处理程序不适合您,那么您将不得不使用 services.ConfigureApplicationCookie()
注册自定义 CookieAuthenticationEvents.(On)RedirectToLogin
事件以更改身份 returns一个"unauthorized response".
这是一个返回 401 响应的示例:
services.ConfigureApplicationCookie(options =>
{
options.Events.OnRedirectToLogin = context =>
{
context.Response.StatusCode = 401;
return Task.CompletedTask;
};
});