我試圖實現與離子云的驗證服務用戶登錄,並且寧願不表演科爾多瓦inAppBrowser。在認證錯誤(如密碼錯誤)的情況下,我希望在錯誤處理程序火災,但由於某些原因,這似乎永遠是這樣。如何處理與離子定製身份驗證登錄錯誤?
在我登錄組件的方法包含此:
let loginData = {
email: this.email,
password: this.password
};
let loginOptions: AuthLoginOptions = {
inAppBrowserOptions: {
hidden: true
}
};
this.auth.login('custom', loginData, loginOptions).then(() => {
console.log('login success');
}, (err) => {
console.log('login error', err); // <-- this never gets executed.
});
我確信,我的身份驗證服務器的401 HTTP狀態和JSON體包含錯誤性質響應。這是代碼(PHP,Laravel 3):
public function get_login()
{
try {
$redirect_uri = CustomAuthentication::process(
$_GET['token'],
$_GET['state'],
$_GET['redirect_uri']
);
return Redirect::to($redirect_uri);
} catch (\Exception $e) {
return Response::json(array(
'ok' => false,
'error' => $e->getMessage(),
'code' => $e->getCode()
), 401);
}
}
我發現在GitHub上兩個問題,似乎相關:
- https://github.com/driftyco/ionic-cloud/issues/53
- https://github.com/driftyco/ionic-cloud-angular/issues/22
顯然是沒有辦法當inAppBrowser被隱藏的時候讓這個工作。還是有另一種選擇?
如果現在還沒有辦法達到這個目的,那麼爲了給用戶提供一個很好的登錄流程,會有什麼替代方案呢,爲失敗的登錄嘗試提供一個有意義的錯誤消息呢?
我應該嘗試用可見inAppBrowser來實現這一點?如果是這樣,我可以在哪裏找到文檔或示例?
不幸的是,官方文檔並沒有多大的報道(http://docs.ionic.io/services/auth/custom-auth.html#login),我發現的教程已過時。