有没有办法在 .Net 5 中的 AuthorizationHandler 中重定向?

问题描述

如果某些检查未通过,我想重定向到我的 AuthorizationFilter 中的操作。我想重定向而不是将用户发送到“AccessDenied”视图的原因是为了防止用户知道端点在某些条件下存在。

一个更好的例子是,当您创建登录系统时,您“应该”永远不要明确告诉用户用户名/电子邮件或密码是否错误。如果有人告诉他们用户名/电子邮件是正确的,他们知道它存储在数据库中,现在他们只需要找出密码即可。

在 .Net Core 3.0 之前在 AuthorizationHandler 内部重定向时,我可以使用:

if (context.Resource is AuthorizationFilterContext redirectContext) 
{
    redirectContext.Result = new RedirectResult("/Account/nopageHere");
    context.Succeed(requirement); 
}

但从 .Net Core 3.0+ 开始,这已更改且不再受支持。所以我的问题是,可以从 AuthorizationHandler 重定向还是完全删除

我可以使用的一个解决方案是通过 AuthorizationHandler 中的 HttpContextAccessor 在 HttpContext.Items 中存储一些数据,然后根据该数据进行重定向。如果我的控制器继承自基本控制器,该控制器具有处理 HttpContext.Items 中的数据并决定我们是否应该重定向以及在哪里重定向方法,那么这会工作得很好。唯一的问题是我需要在每个使用 AuthorizationFilter => 痛苦的 Action 中插入这个基类方法。我想将逻辑保留在一个地方,而不必复制粘贴代码

如果有人有更好的建议,我很想听听!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)