Binding采用 wsHttpBinding
传输安全采用 username
验证类通常是这么写的
public class CustomUserPassword : UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
if (userName != "admin" || password != "admin")
{
throw new SecurityNegotiationException("验证用户名和密码不正确!");
}
}
}
如果直接使用帐号密码验证失败抛出的异常客户端是无法接受的,所以需要设置serviceDebug的includeExceptionDetailInFaults属性为true.
这样客户端的确能接受到异常,但是开启includeExceptionDetailInFaults属性是不安全的,微软告诉我们部署时我们应该关闭includeExceptionDetailInFaults属性;
所以应该怎样正确通知客户身份验证没有通过?
参考文章:WCF 将指定错误做为结果的一部分返回
你可以在将结构返回给客户端,然后在客户端判断就ok了。。
public override string Validate(string userName, string password)
{
if (userName != "admin" || password != "admin")
{
return ‘验证用户名和密码不正确’;
}
}
@金牛战斗士: 您还能将父类的方法的返回值修改?明显的错误啊
人才,,,,