【问题标题】:Implementing rights management in class design在类设计中实现权限管理
【发布时间】:2013-02-22 10:41:01
【问题描述】:

我必须做一个项目,其中会有许多用户将使用该应用程序。用户可以属于用户、执行人员或管理员。每个用户组都有自己的权利。所有数据都将存储在数据库中。

现在我正在做类设计,我不知道我是否必须设计一个类本身的权限,或者我是否应该只关注用户组,然后拒绝或允许访问数据库中的 CRUD 操作。

实现涉及用户或组的权利的好方法是什么?

【问题讨论】:

  • 您将如何验证您的用户,以及需要何种程度的安全性? SQL Server 的内置安全性将提供更大的信心,但如果您的应用不能支持它,那么选择就不同了...
  • 我计划使用一种预防性安全措施。就像用户看不到他不应该访问的按钮一样。例如,管理员拥有可以添加用户的控件,而高管和用户则没有。我的计划是,在加载表单时,它会检查坐在它前面的用户的权限,然后根据用户的组生成表单。
  • 当然,把纵深防御的讨论放在一边,你没有任何真正的要求来强化数据库,所以你可能也可以使用任何框架——你是—— using 的授权行为并努力不掩盖它 - 它们通常很容易理解,并且可能会更好地记录:)

标签: sql-server database class-design rights-management


【解决方案1】:

设计满足您业务需求的课程。我想象一些允许配置用户屏幕的“面向 UI”的类。在数据库端我不知道“权限有用户”还是“用户有权限”;根据您的商业模式进行设计。当然,您需要 grunt-code 来映射到数据库中的信息。

将权利设计为一个类本身或...

取决于该类的复杂程度。 ...我会说UserGroup 类将拥有List 的权利,无论是复杂对象的集合还是仅仅是枚举。如果你的商业模式只需要问“Bob 有什么权利?”那么枚举列表对我来说听起来不错。枚举的替代方案是 Right 基类,为每个权限子类化。恕我直言,对于这种微不足道的用途来说工作量太大了。

如果您不确定要走哪条路,请创建一个单独的类来封装权限列表。如果/当您从枚举转到 Right 类时,它向应用程序的其余部分公开的“API”将不会改变,然后再返回。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-31
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    相关资源
    最近更新 更多