Angular アプリで多かれ少なかれ一般的なエラー ハンドラーを作成したいと考えています。
たとえば、次のリンクを含むメールを受け取ります: mysite/messages/151 このメールをクリックすると: ログインしていない場合、フレームワークは 403 を (意図的に) 返します。
だから私はこの工場を作りました。今のところ、403 エラーを探してから、ユーザーをログイン ページにルーティングするだけです。
app.factory('httpRequestInterceptor', ['$q', '$location', '$rootScope', function($q, $location) {
return {
'responseError': function(rejection) {
if (rejection.status === 403) {
$location.path('/user/login');
return $q.reject(rejection);
}
}
};
}]);
app.config で、次の行を追加しました。
app.config(['$httpProvider', function($httpProvider)
{
$httpProvider.interceptors.push('httpRequestInterceptor');
403 が表示されたら、正しいパスに移動します: /user/login これまでのところ、問題ありません。
しかし...どうにかして$stateを追加したいので、呼び出し元のURLが(messages/151)であることがわかっているので、正しい場所に戻ってメッセージを表示できます。
工場で $state を使用できません (まだ理解していない技術的なもの ($http と $state?) によるエラー) です。
だから、私は欲しい:
1) URL の 403 エラーでログイン状態に移行 (動作)
2) ユーザーからログイン資格情報を取得する (動作)
3) ログイン後の URL への移動は問題ありません (手がかりではありません)
別のアプローチを使用する必要があるかもしれませんが、頭を悩ませることはできません。うまくいけば、誰かが私を助けてくれますか?