【问题标题】:Is there a way to set a calling application execution permissions for a C# library?有没有办法为 C# 库设置调用应用程序执行权限?
【发布时间】:2009-08-11 00:29:13
【问题描述】:

我正在创建一个用于多个应用程序的 DAL,但我没有提供任何授权或身份验证来验证调用应用程序是否具有执行 DAL 和访问数据的权限,即确保用户只能看到他们被允许看到的信息,对我来说,这是业务层确定这些规则的责任。最终我想在 Web 和桌面应用程序之间共享这个库,但是一旦 DAL 库到达桌面,我不希望用户使用 DAL 并不受限制地访问 DAL 提供的数据。

有没有办法确保调用的应用程序是批准的应用程序?我想避免通过每个函数或类创建传递的密钥或密码。理想情况下,我想要 DAL 的某种应用程序级别的方式,知道该应用程序是受信任的并且可以执行代码。

这可能有点牵强,但我希望也许有一些关于如何解决问题的创造性想法,或者我可能需要以不同的方式解决问题。

【问题讨论】:

  • 数据的权限是授予特定应用还是授予特定角色的特定用户?
  • Chansik,该权限是为了确保只有“注册”的应用程序调用 DAL。因为我的目标是有一个通用版本,可以用于不受控制的环境的桌面应用程序。

标签: c# permissions data-access-layer


【解决方案1】:

在 DAL 代码中,您可以让它检查数据库中允许的调用者列表。

System.Reflection.Assembly.GetExecutingAssembly() 可能有一些属性可以用来提供要存储的授权调用者信息。

【讨论】:

  • 您可以使用FullName 属性,并检查公钥令牌。这是提取它的 RE:PublicKeyToken=(?<pkt>[\da-fA-F]{16})
  • 感谢 elan,这为我提供了我需要这样做的起点。尽管我运行了一个快速测试来验证并且我需要使用 GetCallingAssembly(),但我总是忘记反射库有什么可用的。再次感谢。
猜你喜欢
  • 1970-01-01
  • 2016-08-18
  • 1970-01-01
  • 2013-07-04
  • 2011-03-03
  • 2015-12-08
  • 2017-07-13
  • 1970-01-01
  • 2022-10-07
相关资源
最近更新 更多