我正在爲我的WCF安全性使用自定義用戶名和密碼驗證。現在我想在請求期間存儲用戶名,以便稍後可以在被調用的方法中訪問它。我怎麼做?將數據存儲在WCF請求中的位置
一些示例代碼來描述我的問題:
public class CustomUserValidator : UserNamePasswordValidator
{
public override void Validate(string username, string password)
{
if (username == "aaa" && password == "bbb")
{
// store username where i can get it in method called later.
return;
}
throw new SecurityTokenException("Unknown Username or Password");
}
}
現在的方法被稱爲:
public void WebServiceMethod()
{
Database.User.Single(c => c.Username == /* username from above */);
}
BR
安德烈亞斯
最簡單的方法是將它存儲在一個靜態的用戶名屬性。更好的方法是編寫一個自定義的WCF行爲。 – daryal 2012-04-25 11:55:57
@daryal在每個級別上都不好; a:WCF是多線程的,b:WCF可以在不同的點使用不同的線程(使得線程靜態不可靠) – 2012-04-25 11:59:20
@MarcGravell你在每個關卡都是對的:),但爲了回答這個問題,實例模式和concurreny模式。這就是爲什麼我建議寫一個行爲。 – daryal 2012-04-25 12:02:38