我正在 learn.microsoft.com 上阅读ASP.NET Core 中的基于资源的授权,我对检查文档作者所需的复杂性感到困惑。
在此示例中,我们需要创建Operations和DocumentAuthorizationCrudHandler类,在Startup中注册 DI ,调用并等待AuthorizeAsync,然后执行检查。
我们无需在 4 个文件中编写 30 行代码,只需一行代码即可完成所有操作
if (User.Identity?.Name == Document.Author) return Page();
Run Code Online (Sandbox Code Playgroud)
如果我们希望能够重用它,我们可以将其提取到一个方法中,但这仍然是一个简单得多的解决方案。
一线解决方案有什么问题或者我遗漏了什么吗?
编辑:
为了澄清我的问题 - 有没有具体的例子为什么最好实现 AuthorizationHandler 和 OperationAuthorizationRequirement 来进行资源授权而不是进行简单的检查?我真的很好奇有什么好处,因为我更喜欢简单的解决方案,但我担心将来会遇到 AuthorizationHandler/OperationAuthorizationRequirement 已经涵盖的某些情况。
正如文档所说,Operations类DocumentAuthorizationCrudHandler使您能够为每种操作类型编写单个处理程序而不是单独的类。
如果我们希望能够重用它,我们可以将其提取到一个方法中,但这仍然是一个简单得多的解决方案。
推荐的基于资源的授权使用DI,这样可以更清晰、更强大,而不是到处重复if/else代码。
此外,我们还可以在自定义授权处理程序中处理不同的状态代码(401,403...)。我们可以IAuthorizationService在视图或 blazor razor 组件中使用。
| 归档时间: |
|
| 查看次数: |
1451 次 |
| 最近记录: |