0

David Mosher の優れたフロントエンド ワークフロー チュートリアルに従って、lineman.js、angularjs フロントエンド、laravel バックエンド ( http://www.youtube.com/watch?v=fSAgFxjFSqY ) を使用してアプリを構築しています。

angularjsアプリをブートストラップする前に、laravelバックエンドからcsrfトークンを取得して定数として注入できるように、アプリを手動でブートストラップしています。

私のbootstrap.jsファイル:

(function() {
  var $injector = angular.injector(['ng']);
    $injector.invoke(function($http, $rootScope) {
      $rootScope.$apply(function() {
        $http.get("/api/auth/csrf_token").then(function(response) {
          angular.module("app").constant("CSRF_TOKEN", response.csrf_token);
          angular.bootstrap(document, ['app']);
        });
      });
    });
  })();

次のように、laravel routes.php ファイルで laravel から csrf_token を取得しています。

Route::get('/api/auth/csrf_token', function() {
  return Response::json(array('csrf_token' => csrf_token()));
});

Chrome Dev で、バックエンドから csrf トークンを取得していることがわかります。

XHR finished loading: "http://localhost:8000/api/auth/csrf_token". 
Network/Preview (->csrf_token): csrf_token: "BsMDDJ8ZjESpvdBLWBLz5ORM5LNXOsl3gx5LBcj5"

問題: angular アプリケーションで CSRF_TOKEN 定数が見つかりません。

質問: CSRF_TOKEN 定数の定義にエラーがありますか、それともブートストラップ コードに他のエラーがありますか?

どんな助けでも大歓迎です。

4

1 に答える 1

0

CSRF_TOKEN は「csrf_token」ではなく「data.csrf_token」に格納されます。交換しました

angular.module("app").constant("CSRF_TOKEN", response.csrf_token); 

angular.module("app").constant("CSRF_TOKEN", response.data.csrf_token); 

bootstrap.js ファイルで。今では動作します。

于 2014-03-16T11:16:03.317 に答える