【发布时间】:2019-05-29 23:39:31
【问题描述】:
考虑到我有基于策略授权的 .NET 控制器:
public class ImportantController: Controller {
[HttpGet]
[Authorize(Policy = "CanAccessVIPArea")]
public IActionResult ShowInformation() {
...
return OK(VipData);
}
[HttpPost]
[Authorize(Policy = "CanChangeVIPData")]
public IActionResult SaveInformation([FromBody] VipData) {
...
return CreatedAtAction(...);
}
}
显然,真实的例子要复杂得多;如果我的简化导致过多的虚构,我深表歉意。此外,真正的应用是带有 Angular 前端的 SPA;但我认为这对这个问题没有任何影响。
当用户调用ShowInformation() 时,我会显示很多数据。在那个页面上我有Save 按钮调用SaveInformation()。授权中间件检查正确的策略,一切正常。
问题是当用户按下保存时,她输入了大量数据,却发现她没有保存权限。很明显,导致体验不好。我想在用户调用 ShowInformation 时调用的中间件中检查对 SaveInformation 的权限。我不想检查硬编码策略,因为它在服务器上并且可以更改(我们有非常复杂的权限管理系统,可以在运行时操作权限)。 SaveInformation 的调用与 ShowInformation 在同一个 Angular 服务中,并且很容易检查...
我想调用类似/api/SaveInformation?dryrun 的东西,它会在授权中间件成功或失败后使管道短路。
【问题讨论】:
标签: asp.net-core .net-core authorization