首页 新闻 会员 周边

WCF用户名密码认证如何通知客户端验证失败?

0
悬赏园豆:100 [待解决问题]

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属性;

所以应该怎样正确通知客户身份验证没有通过?

带头大哥冠希的主页 带头大哥冠希 | 初学一级 | 园豆:100
提问于:2012-03-19 12:40
< >
分享
所有回答(2)
0
dudu | 园豆:30943 (高人七级) | 2012-03-19 18:46

 你可以在将结构返回给客户端,然后在客户端判断就ok了。。

 

 public  override string Validate(string userName, string password)
{
if (userName != "admin" || password != "admin")
{
      return ‘验证用户名和密码不正确’;
}
}
支持(0) 反对(1) 杭州湛亚技术支持 | 园豆:275 (菜鸟二级) | 2012-03-20 19:03

@金牛战斗士: 您还能将父类的方法的返回值修改?明显的错误啊

支持(0) 反对(0) Rising_Sun | 园豆:204 (菜鸟二级) | 2012-09-19 10:41
0

人才,,,,

lailewei | 园豆:201 (菜鸟二级) | 2014-04-22 10:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册