0

我正在关注 David Mosher 出色的前端工作流程教程,使用 lineman.js、angularjs 前端和 laravel 后端 ( http://www.youtube.com/watch?v=fSAgFxjFSqY ) 构建应用程序。

我正在手动引导应用程序,以便我可以从 laravel 后端获取 csrf 令牌并将其作为常量注入,然后再引导 angularjs 应用程序。

我的 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 存储在“data.csrf_token”中,而不是“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 回答