2011-10-18 42 views
1

這是我開發Web服務的第一次嘗試。通過在用戶請求的上下文中發送登錄名和密碼(使用此示例:http://www.mkyong.com/webservices/jax-ws/application-authentication-with-jax-ws/),然後從每個WS方法調用驗證方法來實現身份驗證。但在這種情況下,用戶通知認證失敗的方式更好?拋出異常(SOAP錯誤)?或者還有其他更好的方法?用戶通知Web服務中認證失敗的方式比較好?

P.S.對不起,我的英語不好

回答

0

阿爾喬姆,

SOAP錯誤大致類似於程序異常,所以我會返回一個SOAP錯誤與

  • 明顯的故障代碼(即錯誤號)和
  • 一個「香草」故障字符串,它將適合顯示給用戶;和
  • 包含「技術細節」的故障詳細信息,例如底層異常和堆棧跟蹤。

這給你兩全其美,簡約的靈活性。只是說,在服務實現你趕上一個AuthenticationFailureException建設 「SOAP故障響應」 與

  • 的faultcode = 5,
  • FaultString = 「驗證失敗」,並
  • FaultDetail =「AuthenticationFailureException:胡說等等\ n <堆棧跟蹤>」

因此,在編程的時候,你已經得到了你需要看看到底出了什麼差錯,並在生產服務消費者(即表示層)一切負責處理SOAP錯誤,以便向用戶呈現適當的錯誤消息。確切地說,向用戶顯示的內容絕不應該是,特別是在故障情況下,確定爲服務。這顯然是表示層的責任。

還有一個改進方案......確保爲「認證服務當前不可用」場景使用單獨的異常類型(和soap-fault-code),以便用戶不會無情地繼續重試,他們忘記了密碼,或者被黑客攻擊了,或者其他什麼。

這是一篇很好的關於Using SOAP Faults的MSDN文章,它適用於Java和.NET Web服務。

乾杯。基思。