微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我从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;
    };
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐