.Net core - 是否可以根据传入请求使用动态声明来实现自定义声明验证?

问题描述 投票:0回答:0
是否可以在.net core 3.1或.net 6中实现自定义ClaimsValidation?如果是的话,怎么办?

我们有通用的单一休息端点,可以根据请求负载中提到的“报告名称”返回任何报告。现在,声明验证有点硬编码为“AllReportAccess”,但需要对其进行细粒度以便更好地控制

现有实施:

[ClaimsValidation(Claims.AllReportAccess)] public async Task<IActionResult> GetReport(){}
预期实施:

由于请求负载中的报告名称可能因请求而异,因此我们的声明验证也需要根据请求的报告进行相应更改。

Claims.AllReportAccess 无法进行编码,但如果传入请求针对 Report2,则声明验证应该是动态的,那么我们需要检查更高阶的声明,例如 Claims.AllReportAccess 或

特定报告访问,例如 Claims.Report2 访问,但是不仅是 Claims.AllReportAccess 始终进行声明验证。

我们需要保留“Claims.AllReportAccess”以支持向后兼容性。

如果通过内置或自定义 ClaimsValidation 属性无法实现上述要求,那么可以使用

授权过滤器 或自定义中间件吗?

asp.net-mvc filter asp.net-core-mvc middleware claims
© www.soinside.com 2019 - 2024. All rights reserved.