我是wcf的新手,所以有一个问题就像wcf和用户身份验证一样困扰我。通常在asp.net中我发送用户名和密码,并在服务器端根据数据库进行验证,如果用户有效,则我在会话中存储一些数据,并在每个页面中检查会话以及会话是否存在且存储为true对于该会话中的该用户,我让页面执行,否则我将用户重定向到登录页面。所以我想知道如何在wcf中实现这种用户身份验证。我想当第一次用户将调用我的服务的任何方法然后他将通过凭证,如果凭证是好的,那么他可以调用我的服务的任何方法。请指导我怎么能在wcf中做到这一点。在wcf中如何为会话中的每个用户存储会话中的任何数据....有什么办法吗?
但是这里有人注意到来电者通过用户名&密码,但代码看起来像用户名和密码两次像
private static void Main(string[] args)
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(
delegate { return true; });
var client = new WcfServiceClient();
GetCredentials();
client.ClientCredentials.UserName.UserName = username;
client.ClientCredentials.UserName.Password = password;
Console.Write(client.GetData(1));
client.Close();
Console.Read();
}
...但为什么两个用户名和密码来 UserName.UserName 它看起来很丑陋。 让我最好地了解如何在第一次调用我的服务时对用户进行身份验证,然后进行身份验证,然后从下次他可以调用我的服务的任何方法而不提供凭据。
有人告诉我开发用于验证user.once用户身份验证的服务然后服务将为每个wcf客户端提供一些唯一的令牌ID,并且当调用任何方法时客户端将该令牌作为消息头传递......我有不知道如何实现它,甚至我不知道它是否是最好的。所以寻找指导和建议。感谢
答案 0 :(得分:1)
处理WCF身份验证的最常用方法是让客户端程序一次请求用户名和密码(或从配置文件中检索它),并让客户端程序为每个服务调用提供它。可以在http://msdn.microsoft.com/en-us/library/ff405740.aspx找到一些示例。
替代方案是拥有用户会话,这通常是一个坏主意。会话不容易扩展,有客户端和服务器平台兼容性考虑等...