我正在开发.NET MVC应用程序,目前仅使用基于角色的访问控制。例如,我用[Authorize(Roles="Provider")]
包装了控制器端点。
现在,我也想在资源上添加添加权限,例如不仅说明用户是否可以编辑文档,还定义了用户可以编辑哪些文档。
所以我希望它看起来像-
[Authorize(Roles="Provider")]
[Authorize("CanEditObject1")]
这样做的最佳实践是什么?这里需要什么类型的授权?也许我需要混合一些(基于角色的访问+基于策略的访问)?我需要更改整个身份验证方法还是仅在其顶部添加?
答案 0 :(得分:-1)
您将要研究“策略”。当我尝试提交授权标签助手的PR时,我也很快就接受了这样的培训,但从未尝试过。简而言之,在您的组合根目录中定义策略,并检查具有Authorize属性的策略。
行级别访问可能需要进行其他检查,除非您可以建立成员级别。
答案 1 :(得分:-1)
假定控制器级别的授权是只读的,则可以通过在控制器的编辑方法上使用授权属性来在其编辑方法上实施更具限制性的“编辑”角色。我还将有条件地向没有该角色的最终用户隐藏视图中用于编辑方法的链接。另一种选择是利用声称已通过身份验证的用户必须区分其对某些资源的访问权的说法。