微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决有没有办法在 .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 举报,一经查实,本站将立刻删除。