这个问题在这里已经有了答案:
ASP.NET Core 2.0 disable automatic challenge
(8 个回答)
4年前关闭。
我正在使用 .NET core 2.0 和 cookie 身份验证。
我的配置是这样的:
services
.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.ExpireTimeSpan = TimeSpan.FromDays(1);
options.SlidingExpiration = true;
options.Cookie.Name = "authtoken";
});
当我访问未经授权的 Controller 时,我被重定向到
/Account/Login
在 .NET Core 1.1 中,我可以通过设置来配置它
AutomaticChallenge = false
.如何在 .NET Core 2.0 中配置它?
我只希望我的 Controller 返回 HTTP 403。
最佳答案
不幸的是,该标志已被完全移除。但是,您可以在 startup.cs 的 ConfigureServices 方法中像这样覆盖“RedirectToLogin”事件
services.AddAuthentication("CookieAuthenticationScheme")
.AddCookie(options => {
options.Events.OnRedirectToLogin = (context) =>
{
context.Response.StatusCode = 401;
return Task.CompletedTask;
};
});
如果您在升级时遇到问题,请在此处提供更多花絮:https://dotnetcoretutorials.com/2017/09/16/cookie-authentication-asp-net-core-2-0/
我是否正确地假设这是因为它是您正在进行的 ajax 调用(或者一般的 Web API?)。似乎 MS 已经很努力了,JWT 用于 Web API,而 Cookie 仅用于 MVC。因此,为什么强制登录页面。
关于asp.net - .NET Core 2.0 cookie 身份验证 - 不重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46247163/