2014-09-26 90 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對象,您可以爲此目的進行詢問(我還沒有機會在憤怒中使用)。

相關問題