在web服务中,哪种方式通知用户身份验证失败比较好?



这是我第一次尝试开发web服务。身份验证是通过在用户请求的上下文中发送登录名和密码(本例为http://www.mkyong.com/webservices/jax-ws/application-authentication-with-jax-ws/),然后从每个WS方法调用身份验证方法来实现的。但是在这种情况下,什么样的用户认证失败通知方式更好呢?抛出异常(SOAP错误)?还是有更好的办法?

注:对不起,我的英语不好

美术,

SOAP错误大致类似于程序异常,所以我会用

返回SOAP错误
  • 一个独特的故障代码(即错误编号)和
  • 一个"普通的"错误字符串,适合显示给用户;和
  • Fault Detail包含"技术细节",如底层异常和堆栈跟踪。

这给了你最好的两个世界,简单性灵活性。例如,在服务实现中,您捕获AuthenticationFailureException并使用

构建"SOAP错误响应"。
  • FaultCode = 5,
  • FaultString = "Authentication Failed", and
  • FaultDetail = "AuthenticationFailureException: blah blahn "

因此,在编程时,您已经获得了所需的一切,可以确切地看到哪里出了问题,而在生产中,服务消费者(即表示层)负责处理SOAP错误,以便向用户显示适当的错误消息。向用户显示的内容绝对不应该被确定为服务,尤其是在故障场景中。这显然是表示层的职责。

还有一个改进…请确保为"身份验证服务当前不可用"的场景使用单独的异常类型(和soap-fault-code),这样用户就不会徒劳地不断重试,担心他们忘记了密码,或者被黑客攻击,或者其他什么。

这是一篇关于使用SOAP错误的简洁的MSDN文章,它适用于Java和。net web服务。

欢呼。基斯。

最新更新