C# WCF UserNamePasswordValidator是否需要检查PrimaryIdentity.IsAuthenticated?

C# WCF UserNamePasswordValidator是否需要检查PrimaryIdentity.IsAuthenticated?,c#,wcf,validation,authentication,operationcontract,C#,Wcf,Validation,Authentication,Operationcontract,目前,我有一个使用UserNamePasswordValidator对客户端用户进行身份验证的服务。验证代码如下所示: public override void Validate(String userName, String password) { if (userName == null) || (password == null) throw new FaultException("Username and/or password not speci

目前,我有一个使用
UserNamePasswordValidator
对客户端用户进行身份验证的服务。验证代码如下所示:

  public override void Validate(String userName, String password)
  {
      if (userName == null) || (password == null)
          throw new FaultException("Username and/or password not specified.");
      if (userName != "test") && (password != "tset")
          throw new FaultException("Invalid username and/or password.");
  }
正如您所看到的,当出现问题时,代码总是抛出异常

现在问一下问题-是否有任何理由我应该检查
ServiceSecurityContext.Current.PrimaryIdentity.IsAuthenticated
在我的
OperationContract
函数中是否为真?比如说,

  public interface IMyService
  {
      [OperationContract]
      void myOpContract();
  }

  public class MyService : IMyService
  {
      public void myOpContract()
      {
          // Do I really need this conditional statement?
          if (ServiceSecurityContext.Current.PrimaryIdentity.IsAuthenticated)
              // Proceed as expected
          else
              // Fail?
      }
  }

如果有任何帮助,我们将不胜感激。

从本文中的一些评论以及各种测试中可以看出,
if([…]PrimaryIdentity.IsAuthenticated)
部分不是必需的。在
UserNamePasswordValidator
中抛出错误可以中止安全协商

但是,代表作者的一个好主意是,如果将来添加新绑定(连接类型)时没有安全性,则保留
if([…]PrimaryIdentity.IsAuthenticated)
条件语句会有所帮助