2010-07-15 53 views
1

我在VS2010中使用了Silverlight BusinessApplication模板。我已經將AuthenticationService更改爲使用我自己的身份驗證方法 - 要求是用戶使用他們的SQL登錄(公司中沒有AD)登錄系統。爲AuthenticationService創建ObjectContext,無需用戶名和密碼

在登錄時,我構建了一個SQLConnection,嘗試打開它,然後從User表中獲取它們的詳細信息(友好名稱,角色等)。然後我存儲他們輸入的用戶名和密碼,並且每當他們通過DomainService訪問數據庫時,我都會覆蓋CreateObjectContext並將他們輸入的用戶名和密碼插入到數據庫中。

我已經將AuthenticationService更改爲從IAuthentication和LinqToEntitiesDomainService繼承,主要用於訪問用戶表。

我啓動應用程序時,用戶登錄前運行到一個問題,自帶的BusinessApplication模板LoginStatus控件具有以下行:

private readonly AuthenticationService authService = WebContext.Current.Authentication; 

這引起了我的構造AuthenticationService被調用,並且,作爲其一部分,嘗試創建ObjectContext,但用戶尚未登錄,因此我沒有用戶名和密碼添加到連接字符串中。對於開發。目的我只是使用我的用戶名和密碼,如果沒有登錄,但我現在需要解決這個問題。

有關如何解決此問題的任何想法?我可以看到的選項有:

  • 不要使用EF(我寧願使用它,因爲我的數據訪問的其餘部分使用EF完成)。
  • 在數據庫中創建一個虛擬用戶,如果未登錄(不理想),則將其用作憑證。

有沒有另一種方法呢?在我的AuthenticationService的構造阻止被調用的CreateObjectContext?

任何幫助/建議表示讚賞。

更新

我改變了我的AuthenticationService從的DomainService,而不是LinqToEntitiesDomainService繼承和使用一個SqlDataReader拿到認爲需要對用戶數據,但我是否有另一種方式STIL好奇。

回答