[转载红鱼儿]kbmmw 开发点滴:Authorization failed.
開始利用kbmmw實(shí)作項(xiàng)目,第一件事就是為的服務(wù)端加用戶的認(rèn)證。如果客戶端發(fā)來的請求無法在服務(wù)器端通過認(rèn)證,即客戶端認(rèn)證失敗,會(huì)在客戶端彈出一個(gè)錯(cuò)誤提示窗口:Authorization failed.總不能讓用戶看到這樣的提示信息,得想辦法,截獲這樣的錯(cuò)誤,并給出自己的提示。沒想到,費(fèi)了一翻周拆,最終發(fā)現(xiàn),kbmMW沒有提供機(jī)制來處理這樣的問題。
先看看服務(wù)器在哪里處理這樣的錯(cuò)誤:
單元:kwmMWServer
方法:procedure TkbmMWServer.InternalServeMessagePart
'Authorization failed.')
行號(hào):5118,5182
服務(wù)器端直接把錯(cuò)誤寫到了返回流中,明顯看出,作者沒有想到多語言的問題。
再看客戶端:
單元:kbmMWClient
方法:function TkbmMWCustomClient.InternalSendRequest
代碼:
????????????????? if tResponseStream.IsError then
????????????????? begin
?????????????????????? case tResponseStream.StatusCode of
??????????????????????????? -KBMMW_ERR_AUTHFAILED: raise EkbmMWAuthException.Create(KBMMW_ERR_AUTHFAILED,tResponseStream.StatusText);
行號(hào):864
客戶端直接判斷返回的流有錯(cuò),則raise服務(wù)器端返回的錯(cuò)誤信息!
解決方法:
1.把出錯(cuò)信息改成漢字
2.在TkbmMWCustomClient修改源碼,增加事件,支持用戶處理錯(cuò)誤
3.在服務(wù)器端kbmMWServer.OnServerResponse事件中定制。
procedure TForm1.kbmMWServer1ServeResponse(Sender: TObject;
? OutStream: IkbmMWCustomResponseTransportStream; Service: TkbmMWCustomService;
? ClientIdent: TkbmMWClientIdentity; Args: TkbmMWVariantList);
begin
? with OutStream do begin
??????? case StatusCode of
??????????? -KBMMW_ERR_AUTHFAILED:StatusText:='服務(wù)器無法確認(rèn)用戶身份';
??????????? -KBMMW_ERR_FUNCNOTAVAIL:StatussText:='服務(wù)不可用';
??????????? -KBMMW_ERR_ABORT:;
??????????? -KBMMW_ERR_SERVICENOTAVAIL:;
??????? end;
? end;
end;
總結(jié)
以上是生活随笔為你收集整理的[转载红鱼儿]kbmmw 开发点滴:Authorization failed.的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《面向模式的软件体系结构3-资源管理模式
- 下一篇: Beetle在TCP通讯中使用协议分析器