2016-07-06 4 views
1

私には、テンプレートインクルードが動的にロードされるanglejs/laravel Webアプリケーションがあります。テンプレート要求が401リダイレクトを返すときに、Laravelを使用してユーザーをログインページにリダイレクトする方法

問題は、ユーザーのセッションがタイムアウトしてページ上の新しいセクションに移動すると、サーバー側でリダイレクトされ、実際にテンプレートが存在していたはずのログインページが返されるという問題です。

このテンプレート要求を代行受信し、代わりに単にログインページをテンプレートとして返すのではなく、ユーザーをログインページにリダイレクトする方法はありますか?

答えて

0

1つのプロジェクトで、httpエラーをインターセプトするこの方法を使用しました。そこで、ログインページ(または好きなもの)にリダイレクトすることができます。

function httpInterceptor($provide, $httpProvider) { 
    function interceptorFunction($q) { 
     return { 
      responseError: function (rejection) { 
       if (typeof rejection.status !== 'undefined') { 
        if (rejection.status === 401) { 
         //Your app will handle 401 errors here... 
        } 
       } 
       return $q.reject(rejection); 
      } 
     }; 
    } 

    $provide.factory('httpInterceptor', interceptorFunction); 
    interceptorFunction.$injector = ['$q']; 
    $httpProvider.interceptors.push('httpInterceptor'); 

angular.module('app', dependencies) 
    .config(httpInterceptor); 

「app」モジュールは「メイン」モジュールです。 401エラーは発生するはずですが、サーバーは少なくともそのステータスコードで応答する必要があります。

+0

よろしくお願いいたします。私は実際にこれを実装してまだテストしていません。しかし、これはララベルのリクエストを傍受するでしょうか?つまり、$ httpサービスを通じて行われたものだけでなく、すべてのhttp要求をインターセプトしますか? – Dmac

+0

これはすべての$ http要求を確実に傍受します。私はあなたが$ httpを使わない角度のあるアプリからajaxコールを作ることができることに気づいていません。 $リソースも$ httpに依存しています...あなたがバニラのjavascript呼び出しを行うと、それをキャッチできないかもしれません。(なぜ) – Rouz

+0

問題はlaravel @includeにありますが、角度テンプレートではありません... – Dmac

関連する問題