[英]How to make some fields to be required for SOAP API Requests?
为了制作 SOAP API,我制作了一个 WCF 服务。
我想让这些字段成为必需: Username
、 Password
、 ID
当客户端向 API 发出请求时,如何使它们成为必填字段?
我想要 :
Username
= 用户Password
= 通过ID
= 身份证号码到目前为止,这是他们的代码:
[OperationContract]
Credentials CheckCredentials(Credentials credentials);
[DataContract]
public class Credentials
{
[DataMember]
public string Username { get; set; }
[DataMember]
public string Password { get; set; }
[DataMember]
public string ID { get; set; }
[DataMember]
public string ErrorResult { get; set; }
}
public Credentials CheckCredentials(Credentials credentialsCheck)
{
if (credentialsCheck.Username == "user" &&
credentialsCheck.Password == "pass" &&
credentialsCheck.ID == "IdNumber")
{
credentialsCheck.ErrorResult = "Correct";
return credentialsCheck;
}
else
{
credentialsCheck.ErrorResult = "Wrong";
return credentialsCheck;
}
}
任何其他建议将不胜感激。
WCF中提供了UserName认证,这会要求客户端在调用服务时提供用户名和密码,这里是一个演示:
创建 CustomUserNameValidator 类:
public class CustomUserNameValidator : System.IdentityModel.Selectors.UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
if (null == userName || null == password)
{
throw new ArgumentNullException();
}
if (!(userName == "test1" && password == "test1") && !(userName == "test2" && password == "test2"))
{
throw new FaultException("Unknown Username or Incorrect Password");
}
}
}
在配置文件中添加userNameAuthentication节点:
<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="Microsoft.Samples.UserNamePasswordValidator.CalculatorService+CustomUserNameValidator, service"/>
客户端调用时需要提供用户名和密码:
proxy.ClientCredentials.UserName.UserName = "test1";
proxy.ClientCredentials.UserName.Password = "test1";
如果还需要验证ID,则需要考虑使用Custom Token。 关于如何创建自定义Token,可以参考这个链接:
https://docs.microsoft.com/en-us/dotnet/framework/wcf/extending/how-to-create-a-custom-token
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.