2011-09-01 57 views
1

我正在尋找最好的做法,用於存儲WCF在登錄過程中獲取的信息,並將其提供給任何後續服務電話(屬於同一個會話) 。最佳實踐要求

基本上我寫我自己的登錄提供:

public class CustomAuthenticator : UserNamePasswordValidator 
    { 
    public override void Validate(string userName, string password) 
    { 
     if (username == "test" && password == "test") 
     { 
      int id_I_want_to_use = getUserID(username); 
     } 
    } 
    } 

而且我有需要的ID以供以後使用上

public void someService(int itemID) 
{ 
    getSomeInfo(id_I_want_to_use, itemID); 
} 

我遇到的問題是我沒有一個服務能夠找到任何有關如何正確存儲的信息。我看了一下instanceContext,但我希望能夠完成這個服務器端的所有工作。我看到一些關於使用asp傳統支持來使用HTTP會話來存儲數據的信息,但那不是我想要的。我想利用現有的技術,以保持一切,我不希望被束縛到一個HTTP綁定,如果我能幫助它。

我可能完全錯誤地接近這一點,但是這基本上就是爲什麼我問。

回答

1

做到這一點的方法是使用實​​例而言,你只是標記您的合同,每個會話

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] 
class MyService : IMyContract {...} 

這是所有服務器端。您需要在客戶端上做的唯一事情是保持代理處於打開狀態,以保持會話的活躍。

欲瞭解更多詳情,請參閱:http://msdn.microsoft.com/en-us/magazine/cc163590.aspx

+0

我想我很困惑。我將如何存儲我在登錄中獲得的用戶ID?基本上,我需要一種方法來傳遞用戶ID(和一些其他領域),以會議的實例,並有可供會話中的每個服務,但這些信息是由我的自定義登錄/驗證功能確定。 – Zipper