如何在自定义UserNamePasswordValidator

时间:2017-08-17 09:07:06

标签: c# wcf

我在我的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>
...

0 个答案:

没有答案