gpt4 book ai didi

cookies - ASP.NET Core 2.0 Identity 中 Cookies.ApplicationCookie.AutomaticChallenge = false 的替代品是什么?

转载 作者:行者123 更新时间:2023-12-02 04:44:13 24 4
gpt4 key购买 nike

我从 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 事件来更改 Identity 返回“未经授权的响应”的方式。

下面是返回 401 响应的示例:

services.ConfigureApplicationCookie(options =>
{
options.Events.OnRedirectToLogin = context =>
{
context.Response.StatusCode = 401;

return Task.CompletedTask;
};
});

关于cookies - ASP.NET Core 2.0 Identity 中 Cookies.ApplicationCookie.AutomaticChallenge = false 的替代品是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45270467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com