跨多个WCF调用存储登录信息的最佳实践
我正在寻找存储WCF登录过程中获得的信息的最佳实践,并使其可用于任何后续服务调用(属于同一会话) 基本上,我编写了自己的登录提供商:跨多个WCF调用存储登录信息的最佳实践,wcf,session,Wcf,Session,我正在寻找存储WCF登录过程中获得的信息的最佳实践,并使其可用于任何后续服务调用(属于同一会话) 基本上,我编写了自己的登录提供商: public class CustomAuthenticator : UserNamePasswordValidator { public override void Validate(string userName, string password) { if (username == "test" && pa
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绑定上
我可能完全错误地处理了这个问题,但这正是我提出这个问题的基本原因。实现这一点的方法是使用实例上下文,您只需将合同标记为每个会话
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
class MyService : IMyContract {...}
这都是服务器端的。在客户机上,您需要做的唯一一件事就是保持代理打开,以便保持会话活动
有关更多详细信息,请参见:执行此操作的方法是使用实例上下文,您只需将合同标记为每个会话
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
class MyService : IMyContract {...}
这都是服务器端的。在客户机上,您需要做的唯一一件事就是保持代理打开,以便保持会话活动
有关更多详细信息,请参阅:我想我有点困惑。但是,如何在登录中存储获得的用户ID?基本上,我需要一种方法将用户id(和一些其他字段)传递到会话实例,并使其可用于会话中的每个服务,但这些信息是由我的自定义登录/验证函数确定的。我想我很困惑。但是,如何在登录中存储获得的用户ID?基本上,我需要一种方法将用户id(和一些其他字段)传递到会话实例,并使其可用于会话中的每个服务,但该信息由我的自定义登录/验证函数确定。