这是我第一次尝试开发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服务。
欢呼。基斯。