gpt4 book ai didi

authentication - 禁止在 ASP.NET Core 中对 API URL 进行重定向

转载 作者:行者123 更新时间:2023-12-03 21:19:53 25 4
gpt4 key购买 nike

我有一个 ASP.NET Core 站点,它对大多数页面使用 cookie 身份验证。对于这些页面,需要为未经授权的客户端提供 302 重定向的默认服务器响应。但是,该站点也接受 API 请求;他们使用 API key ,不使用 cookie。

理想情况下,我想完全关闭 API URL 的 cookie 处理,但至少,我需要确保如果 API 客户端未经授权,服务器不会以 302 重定向响应。

最佳答案

仅当路径不是 API 时,将重定向事件处理程序替换为使用默认行为的处理程序。在 Startup.ConfigureServices ,添加这个:

services.ConfigureApplicationCookie(options => {
options.Events.OnRedirectToAccessDenied = ReplaceRedirector(HttpStatusCode.Forbidden, options.Events.OnRedirectToAccessDenied);
options.Events.OnRedirectToLogin = ReplaceRedirector(HttpStatusCode.Unauthorized, options.Events.OnRedirectToLogin);
});

使用此辅助方法替换重定向方法:

static Func<RedirectContext<CookieAuthenticationOptions>, Task> ReplaceRedirector(HttpStatusCode statusCode, Func<RedirectContext<CookieAuthenticationOptions>, Task> existingRedirector) =>
context => {
if (context.Request.Path.StartsWithSegments("/api")) {
context.Response.StatusCode = (int)statusCode;
return Task.CompletedTask;
}
return existingRedirector(context);
};

有了这个,API Controller 方法可以调用 Unauthorized()Forbid()不会导致重定向。

更新:以上内容适用于 ASP.NET Core 2。 code for ASP.NET Core 1是不同的。

关于authentication - 禁止在 ASP.NET Core 中对 API URL 进行重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42030137/

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