2014-09-26 94 views
0

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

我怀疑可以为每个实体设置一个过滤器或权限,但我不确定最佳方式或如何实现它。这个项目在C#中。

如果任何人都可以指出我在正确的方向,这将不胜感激。谢谢。

回答

0

首先,查看WebMatrix.WebSecurity,它将拥有所有基本成员,例如当前已登录的用户和权限角色。获得这些信息后,您将检查每个控制器,以查看用户是否具有足够高的权限来查看它,如果不是,则返回禁止的代码。

让我知道如果你需要更多的信息

+0

Steve,感谢您的回复。我已经在这个项目上投入了VS LS,但没有投入。我将使用Webmatrix与我当前的LS应用程序,在Webmatrix中启动一个新的应用程序,使用由LS创建的Azure/SQL数据库或启动它。我一直在看它,看起来确实是个好主意。 Mark – Mark 2014-09-26 21:01:53

+0

@Mark by website ..即时通讯假设你正在使用ASP.NET。如果你是那么你可以打电话给WebMatrix代码 – Steve 2014-09-26 21:04:18

1

贝丝·马西的视频演示了如何使用过滤器事件处理程序来做到这一点。 http://msdn.microsoft.com/en-us/vstudio/jj822934 只要每个实体/表具有一列或多列指示用户(或租户是否为多租户),您可以添加一个筛选器,以反映所有通过LS服务的访问。

0

@ Xpert360的响应是过滤数据访问方面的一个很好的起点,但是您确实需要确保数据按照您需要的方式进行构建,然后才能进入该轨道。这里的关键字实际上是一个关键值。您需要在某种用户引用和每个需要以此方式进行限制的实体集之间创建一个外键。有两种基本方法可以做到这一点。

  1. 创建自己的用户表用于此目的,并链接到aspnet_Users表格内,以确定各行(这意味着插入新记录到你的用户时,管理环境下访问Microsoft.LightSwitch.SecurityData.svc服务表)
  2. 在您的数据模型中包含dbo.aspnet_users表,并直接针对该表创建所需的外键。

您需要拦截每个实体的插入,更新和删除方法,以在检查/分配/更新记录时向目标用户记录添加链接。

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

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

相关问题