我正在创建一个使用 basicHttpBinding(SOAP) 的 WCF 服务。我希望对网络服务的每个请求都需要一个帐户名和一个密钥,本质上是一个用户名和密码。目前,这些值作为参数传递给每个公开的方法。这是处理这种情况的正确方法吗?它似乎违反了 DRY,我猜有一种更简单的内置方式。我已经看到了一些通过拦截请求将用户名和密码插入标头的示例,但这种方法似乎为客户端连接增加了相当多的工作量。
谢谢!
我正在创建一个使用 basicHttpBinding(SOAP) 的 WCF 服务。我希望对网络服务的每个请求都需要一个帐户名和一个密钥,本质上是一个用户名和密码。目前,这些值作为参数传递给每个公开的方法。这是处理这种情况的正确方法吗?它似乎违反了 DRY,我猜有一种更简单的内置方式。我已经看到了一些通过拦截请求将用户名和密码插入标头的示例,但这种方法似乎为客户端连接增加了相当多的工作量。
谢谢!
与其发送用户名和密码请求,为什么不使用一个返回令牌并传递它的登录方法呢?
如果您想最小化 DRY,您可以执行以下操作:
首先,创建一个类似于以下的通用类,所有请求合约都继承自(除了登录和注销):
[MessageContract]
public abstract class AuthenticatedRequest <T> {
[MessageHeader]
public string Token { get; set;]
}
现在创建一个名为private bool IsAuthenticated(string Token)
检查令牌的私有函数。这最大限度地减少了检查身份验证的过程。