Data Access Library:如果访问权限为';t或数据不允许;没有找到

本文关键字:数据 不允许 Library Access 如果 访问 权限 访问权 Data | 更新日期: 2023-09-27 18:01:54


我正在为一个基于小部件的报告应用程序构建DAL,它的设计方式是用户选择、配置并将报告"小部件"部署到主屏幕上。小工具可以报告各种公司数据——网站、品牌、员工等等

虽然所有用户都可以访问所有小部件/报告,但并非所有用户都有权访问所有数据。如果我在A公司工作,我无法查看B公司的销售报告或C公司销售人员的员工考勤数据,但我可以配置这样的报告并将其添加到我的"仪表板"中。

在运行时,中间"DataService"类的任务是检查用户的凭据,如果允许访问,则向客户端返回适当的对象集合。

在最初的构建中,如果不允许访问数据,我只返回了一个空列表,但如果报告没有返回数据,我也会这样做(这可能发生(。如果用户没有被授权查看数据,我想在前端显示一条"访问被拒绝"的消息,但很明显,如果我在任何一种情况下得到的都是一个空的集合,那么就不可能知道这是因为权限不足还是没有数据。

如果你能提出一种编码方法,我将不胜感激。我的第一个想法是将凭证检查转移到另一个对象中,该对象反过来调用数据访问类,但时间限制意味着这不是一种选择。

我唯一能想到的是,如果访问权限未被授予,就会抛出一个自定义异常,例如InsufficientApplicationPrivilegeException,但这听起来很糟糕,这与我所学的一切都背道而驰。

感谢阅读。

Data Access Library:如果访问权限为';t或数据不允许;没有找到

我认为您有几个选择。一种是生成一个数据服务类返回的复合对象。复合对象看起来像这样:-

class DataResult<T>
{
   IEnumerable<T> Data;
   Result ServiceResult;
}

ServiceResult包含有关服务调用结果的元数据-它可以是一个枚举,其中包含例如Success、AuthenticationFailure等。然后您可以打开它来执行不同的行为。

另一种选择可能是使用NullObject模式,该模式在视图中显示单个数据项,而不是实际数据,只是显示对象显示属性的"拒绝访问"。这种方法的优点是前端不需要任何条件逻辑等。;但是,如果您想要显示一个特定的消息框或类似的内容,而不是仅仅在小部件中显示一行伪数据,那么这可能是不合适的。