我们有通用的单一休息端点,可以根据请求负载中提到的“报告名称”返回任何报告。现在,声明验证有点硬编码为“AllReportAccess”,但需要对其进行细粒度以便更好地控制
现有实施:
[ClaimsValidation(Claims.AllReportAccess)]
public async Task<IActionResult> GetReport(){}
预期实施:由于请求负载中的报告名称可能因请求而异,因此我们的声明验证也需要根据请求的报告进行相应更改。
Claims.AllReportAccess 无法进行编码,但如果传入请求针对 Report2,则声明验证应该是动态的,那么我们需要检查更高阶的声明,例如 Claims.AllReportAccess 或
特定报告访问,例如 Claims.Report2 访问,但是不仅是 Claims.AllReportAccess 始终进行声明验证。
我们需要保留“Claims.AllReportAccess”以支持向后兼容性。如果通过内置或自定义 ClaimsValidation 属性无法实现上述要求,那么可以使用
授权过滤器 或自定义中间件吗?