2010-03-26 55 views
0

這裏是一個很好的例子,如何爲RIA服務創建自定義autorization: RIA Services: How can I create custom authentication?RIA服務:定製autorization

在我的情況下,Silverlight的網頁將顯示爲HTML內容和用戶授權的一部分已經在服務器端實現(不使用ASP.NET Membership)。必須在授權和非授權用戶的silverlight頁面上顯示不同的信息。

如果用戶已經在服務器端(在通常的ASP.NET網站上)獲得授權,是否有可能跟蹤Silverlight端?

請注意如何做到這一點。

預先感謝您。

回答

0

幾種方法:

  1. 最簡單的:如果在頁面重載的認證結果(因此所有的Silverlight應用程序),你可以在「IsAuthenticated」參數值通過發送到Silverlight應用程序<param name="IsAuthenticated" value="<%= IsAuthenticated %>" />標記的應用程序的<object>標記(在加載HTML中)或InitParameters方法的asp:Silverlight對象,無論您使用的是哪一個;發送給應用程序的Startup事件的處理程序的InitParams成員StartupEventArgs中的SL應用程序將可以看到該參數。

  2. 更復雜:創建包含返回用戶的當前認證狀態的方法的WCF HTTP Web服務(即一個Silverlight可以看到)。

當然,這只是告訴SL應用程序的用戶的身份驗證是否和無助於鎖定你發送到應用程序的任何信息 - 換句話說,服務器仍然應該檢查僅「經過身份驗證」的信息纔會返回到在經過身份驗證的瀏覽器會話中運行的SL應用程序的請求。 (假設該信息相關的認證。如果它只是一組不同的橫幅廣告,然後沒有什麼大不了的。)

+0

第一種情況:可以用戶自己創建的HTML代碼,以顯示我的Silverlight對象,並添加「IsAuthenticated」參數來破解我的網站? 第二種情況:Ben,我是否正確地理解您建議創建額外的服務(我們已經擁有RIA)只是爲了傳遞'IsAuthenticated'參數? 謝謝。 – Budda 2010-03-26 19:29:29

+0

如果您已經有RIA服務,那麼您可以在其中放置一個新的服務方法來測試身份驗證。是的,有人可以破解一個頁面,並使用該參數調用您的Silverlight應用程序 - 這就是爲什麼您需要在服務器上驗證它的原因,然後纔將任何敏感信息發送給客戶端(請參閱我的最後一段)。 – 2010-03-27 03:37:50