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