我正在使用 ASP.Net MVC 4 开发应用程序,并且需要能够在粒度级别授权用户 - 可能是页面上的数据元素,用户可以对一条数据执行的特定操作等。
我目前正在将一个人分配给一个角色,并且该角色被分配了一项活动的权限(查看、添加、编辑和删除)。角色和权限值(我正在使用权限的按位值)分配给活动。我目前正在将一个活动定义为我的 ASP.Net MVC 应用程序中的一个操作。因此,为了导航到 MVC 操作,用户必须至少具有该操作的查看权限,否则他们无法访问该操作。该用户可以在该操作中执行的操作取决于他们的其他权限(添加、编辑、删除)。
这是一个好的方法。所有权限都存储在我的数据库中,因此我已经将权限与 UI 本身分离。例如,我所做的只是检查用户是否在显示加载数据输入表单的按钮之前说添加权限。
我很确定这种方法不够精细。例如,如果我需要在某个角色中隐藏用户 X 的数据列,那么我不确定如何使用我的方法来满足该要求。现在,查看权限是全部或全部。
我非常不愿意在我的视图代码中注入一堆 if 语句来控制向用户显示的内容。这将 UI 与我的安全机制紧密耦合。更不用说你根本无法维持这个。
因此,对于如何使安全机制更加精细,同时保持良好的干净分离,我感到很困惑。当我想到这一点时,我直接跳出了我当前的方法,在我的代码中注入了一堆 if 语句。我没有看到任何替代方案。非常感谢和需要任何关于最佳实践的建议、示例链接等。谢谢你的时间。