gpt4 book ai didi

c# - MVC 字段级安全

转载 作者:太空宇宙 更新时间:2023-11-03 13:01:48 24 4
gpt4 key购买 nike

根据用户角色允许对 UI 字段进行不同级别访问的最佳方法是什么?

在某些屏幕上,我们可能希望一个字段对一个角色来说是只读的,对另一个角色来说是隐藏的,并且可以由另一个角色编辑。很多类似问题的答案都建议每个角色有不同的 ViewModel(和 View ?),只包含您希望该角色中的用户编辑的属性,但这涉及很多重复 - 我们有 3 或 4 个非常类似的虚拟机,它们之间只有少数属性/绑定(bind)属性不同。然后我们必须处理这些不同 View 模型到 Controller 中模型的映射。

这也意味着如果用户想要更改角色的权限,我们需要更改代码。

与此相反,在我们的一个 Web 表单项目中,我们拥有完整的字段级安全性,所有规则都存储在数据库中并在运行时应用,因此更改角色对控件的权限不需要更改任何代码。

我们如何使用 MVC 实现它?

如果 MVC 无法实现仅配置字段级安全性,那么为不同角色实现字段级安全性的最佳方式是什么?我们真的需要每个 ViewModel 和 View 的 n 个副本吗?

编辑添加我们发现this它在数据库中存储角色的权限,但应用程序权限仍然在代码中定义。这会调用 View 中的 Controller 方法:if (ViewContext.Controller.HasPermission("ViewRestrictedHRData"))),但到目前为止看起来是我见过的最好的解决方案

补充一下,我们需要在运行时进行更可配置的操作,包括哪些角色拥有哪些权限,以及为页面上的任何字段添加安全性,而无需在 View 中的每个字段周围添加任何代码。

最佳答案

您可以使用 Razor 语法来检查用户是否处于特定角色。

@if(User.IsInRole("Administrator")) {
Html.TextBoxFor(...);
}

关于c# - MVC 字段级安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32074014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com