我是 wcf 的新手,所以有一个问题困扰着我,比如 wcf 和用户身份验证。通常在asp.net中,我发送用户名和密码,并在服务器端对数据库进行验证,如果用户有效,那么我将一些数据存储在会话中,在每个页面中我检查会话,如果会话存在并且存储为真对于该会话中的该用户,然后我让页面执行,否则我将用户重定向到登录页面。所以我想知道如何在 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它看起来很丑陋。给我一个最好的主意,当他们第一次调用我的服务时如何针对 DB 对用户进行身份验证,并且一旦通过身份验证,然后从下一次他可以调用我的服务的任何方法而无需提供凭据。
有人告诉我为验证用户开发服务。一旦用户验证,那么服务将为每个 wcf 客户端提供一些唯一的令牌 ID,客户端将在调用任何方法时将该令牌作为消息头传递......我不知道如何实施它,甚至我也不知道它是否是最好的。所以寻求指导和建议。谢谢