如何只允许用户访问他们的记录

本文关键字:用户 访问 他们的 记录 许用户 | 更新日期: 2023-09-27 18:24:45

我正在为一家公司设置一个托管在Azure网站/SQL订阅上的应用程序,该公司希望员工拥有用户名(表单身份验证),以便能够查看和执行应用程序中与公司客户相关的一切,但也希望客户使用用户名登录并读取仅适用于自己或其业务的记录。

我怀疑可以为每个实体设置一个过滤器或权限,但我不确定实现它的最佳方式或方法。这个项目是用C#编写的。

如果有人能为我指明正确的方向,我将不胜感激。非常感谢。

如何只允许用户访问他们的记录

Beth Massi的视频展示了如何使用Filter事件处理程序来实现这一点。http://msdn.microsoft.com/en-us/vstudio/jj822934只要每个实体/表都有一个或多个列指示用户(如果是多租户,则为租户),您就可以添加一个过滤器,该过滤器反映通过LS服务的所有访问。

首先,查看WebMatrix.WebSecurity,它将为您实现所有基本成员,如当前登录用户和权限角色。在你得到这些信息后,你会在每个控制器中进行检查,看看用户是否有足够高的权限来查看它。如果没有,则返回禁用代码。

如果您需要更多信息,请告诉我

@Xpert360的响应是过滤数据访问方面的一个很好的起点,但在走上这条道路之前,您确实需要确保数据的结构符合您的需要。这里的键实际上是一个key值。您需要在某种用户引用和每个需要以这种方式限制的实体集之间创建一个外键。有两种基本方法可以做到这一点。

  1. 为此创建自己的Users表,并将其链接到aspnet_Users表以标识相应的行(这意味着在将新记录插入Users表时,在管理上下文下访问Microsoft.LightSwitch.SecurityData.svc服务)
  2. 在数据模型中包括dbo.aspnet_users表,并直接针对该表创建所需的外键

您需要截取每个实体的Inserting、Updating和Delete方法,以便在查看/分配/更新记录时向目标用户记录添加链接。

在某些情况下,记录之间的关系需要多对多(例如,在医疗病例管理系统中,可能有大量从业者需要访问和更新患者的记录)。确保使用适当的交集表实现这些关系。

请注意,可以使用this在服务器端访问VS-LS中的角色分配。Application.User.HasPermission(Permissions.)构造。在客户端,您可以在SilverLight屏幕中使用非常相似的逻辑,但LS-HTML有一些javascript对象,您可以为此目的进行询问(我还没有机会在愤怒中使用这些对象)。