我正在尝试实现一个带有 cookie 身份验证的简单 API。我希望当用户未经授权时有 403 和 401,而当用户未经身份验证时有 401。
当我尝试访问我没有足够权限的受保护端点时,我会陷入递归。
所以基本上,如果我返回 http 403,我就会进入递归。
这是一个非常简单的重现仓库:
流程是登录 -> 尝试访问
GetAuthorizedDataAdmins
(需要具有“管理员”角色)我们只有“管理员”。
将刹车点放在禁止的端点上,你会看到递归。
我做错了什么还是一个错误?
它是如此容易重现,我不敢相信以前没有修复过。
您需要确保AccessDeniedPath路径确实存在。
.AddCookie(o =>
{
o.AccessDeniedPath = "/authentication/forbidden";
o.LoginPath = "/authentication/unauthorized";
});
现在公共类 AuthorizatuinController : ControllerBase 有拼写错误。
此外,此页面通常应该是“访问被拒绝”HTML 页面。还经常用 [AllowAnonymous] 装饰,以确保您不需要经过身份验证即可查看它。