在UserNamePasswordValidator中获取WCF请求参数

时间:2013-05-25 08:25:32

标签: wcf authentication custom-authentication

我有一个带有WCF服务的无状态服务器。服务器可以有多个数据库连接。因此,我必须为每个WCF请求提供数据库连接。我在请求对象中执行此操作。因此,对我的服务器的每个WCF请求都包含有关数据库连接的信息。 这是函数的操作合同:

 <OperationContract()>
 Function ReadPersons(ByVal aRequest As ReadPersonsRequest) As PersonsResponse

这是请求的数据合同:

<DataContract()>
Public Class ReadPersonsRequest
    <DataMember()>
    Public Property DatabaseConfig() As DatabaseConfig

现在我想为我的WCF服务进行自定义身份验证。因此,我实现了从UserNamePasswordValidator继承的CustomUserNamePasswordValidator。我得到了用户名和密码。用户存储在DB中。因此,我必须执行身份验证的DB请求。问题是:我不知道服务器应该使用哪个DB,因为此信息是在WCF服务函数的请求对象中提交的(参见上文)。

有没有办法在UserNamePasswordValidator的实现中获取被调用的WCF服务函数的参数(请求对象)?

1 个答案:

答案 0 :(得分:0)

您可以创建自己的MessageInspectors,以便在服务器收到请求之前拦截请求。通过这种方式,您可以从服务调用中识别数据库详细信息并相应地继续。

有关实施的更多详情,请here