【问题标题】:Data protected in getting data获取数据时受保护的数据
【发布时间】:2017-11-25 09:42:00
【问题描述】:

我的问题是关于保护数据并为以下目的创建智能架构。 我有一个从数据库获取数据的 LibraryBS 类(有很多这样的类型类)。 LibraryBS 类具有 GETALL() 和 GetById(int libraryId) 函数。 GETALL 获取所有库,GetById 仅从数据库中获取一个库,即 Id=libraryId。这是一个使用这些类的 Web 应用程序。 现在我想添加公司保护。这意味着当用户登录系统并使用LibraryBs.GetAll()时,用户只能看到属于用户公司的数据。 还有一些特定的用户(我们称之为超级用户),这类用户进入系统后可以看到所有数据。

你推荐什么类型的模式?

谢谢!

【问题讨论】:

    标签: c# oop design-patterns n-tier-architecture


    【解决方案1】:

    您需要一个用户表来存储用户,该表具有对存储公司详细信息的公司表的引用键或外键,以及一个访问级别表,该表存储用户访问级别以及对使用和公司的外键引用,以及一个表示每个公司每个用户的访问级别。您还需要在您的库表中包含一个返回给公司的参考。

    有了这个,您需要让 LibraryBS.GetAll 方法将用户对象作为参数。

    有了这个,你的 GetAll 方法可以根据传入的用户计算出正确的库。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      考虑到Library的表,它应该包含列companyId和另一个以companyId作为外键的表User。 也许您可以在用户表中添加一个“访问”列。

      将有“访问”列的数据查找表

      Id AccessLevel
      0  Undefined
      1  User
      2  Company
      
      
      User Table
      Id  Name Access CompanyId
      1   Bob  1      1
      1   Jon  2      2
      

      因此,当您获取用户 Bob 的数据时,您可以根据该用户的 Access 动态创建 where 子句。

      【讨论】:

        猜你喜欢
        • 2022-07-03
        • 1970-01-01
        • 2011-05-25
        • 2011-08-03
        • 1970-01-01
        • 2013-03-11
        • 2018-07-19
        • 2011-04-16
        • 2019-12-31
        相关资源
        最近更新 更多