gpt4 book ai didi

redirect - mvc6 未经授权会导致重定向

转载 作者:行者123 更新时间:2023-12-02 21:26:16 24 4
gpt4 key购买 nike

当我从 Controller 返回 NotAuthorized IActionResult 时,我一直试图阻止重定向,但无论我如何尝试,NotAuthorized 都会转换为重定向。

我已经尝试过提到的here (同样的问题,使用较旧的测试版框架,我使用 1.0.0-rc1-final)。我没有通知命名空间(已在 rc1-final 中删除)。

这是我的登录 Controller :

    [HttpPost]
[AllowAnonymous]
public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
{
if (ModelState.IsValid)
{
var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
if (result.Succeeded)
{
return Ok(model);
}
if (result.IsLockedOut)
{
return new HttpStatusCodeResult((int)HttpStatusCode.Forbidden);
}
else
{
return HttpUnauthorized();
}
}
return HttpUnauthorized();
}

在 Startup.cs 中,我尝试了以下变体:

        services.Configure<CookieAuthenticationOptions>(o =>
{
o.LoginPath = PathString.Empty;
o.ReturnUrlParameter = PathString.Empty;
o.AutomaticChallenge = false;
});

每次登录失败(请忽略“确定”时返回的密码)并应导致空的 401 页面时,我会重定向到/Account/Login。这里有什么技巧?

最佳答案

解决方案不是直接配置 CookieAuthenticationOptions,而是通过 IdentityOptions 进行配置,如下所示:

        services.Configure<IdentityOptions>(o =>
{
o.Cookies.ApplicationCookie.Events = new CookieAuthenticationEvents()
{
OnRedirectToLogin = ctx =>
{
if (ctx.Response.StatusCode == (int)HttpStatusCode.Unauthorized)
{
return Task.FromResult<object>(null);
}
ctx.Response.Redirect(ctx.RedirectUri);
return Task.FromResult<object>(null);
}
};
});

关于redirect - mvc6 未经授权会导致重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34770886/

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