我在我的WCF服务中使用UserNamePasswordValidator
。据我所知,对服务内部的某些特定方法进行验证是不可能的。这就是为什么我试图在Validate
方法中获取方法的名称,以便在客户端调用此具体方法时进行滑动验证。但我不知道在哪里可以找到它。
P.S。 OperationContext.Current
方法
Validate
对象是可空的
被修改: 这是我的服务:
public class MyService : IMyService
{
public HttpStatusCode InserOrUpdate(string param1, long param2, int param3)
{
...
}
public string GetPublicKey()
{
...
}
}
这是我的自定义验证器:
public class CustomUserNamePasswordValidator : UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
if(/* currentServiceMethodName == "GetPublicKey" */)
{
return;
}
// Next code decrypts userName/password and checks permissions in DB.
}
}
的Web.config:
...
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
...
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="MyNamespace.CustomUserNamePasswordValidator, MyNamespace" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
...