我正在为我的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