Angular JS& CSRF与RESTFul API Laravel

时间:2015-01-22 23:25:22

标签: javascript angularjs api laravel csrf

无法理解如何使其工作......我正在尝试从API中获取CSRF并将其作为常量加载到我的angularJS应用中。 以下是我在@David Mosher https://gist.github.com/davemo/6141699中使用的代码 我通过这样做启动app.js:

    // Retrieve and inject the CSRF token from the server
(function() {
  var $injector = angular.injector(['ng']); $injector.invoke(function($http,$rootScope) {
    $rootScope.$apply(function() {
      $http.get("http://api.local/auth/csrf_token").then(function(response)
      {
        angular.module("app").constant("CSRF_TOKEN", response.data);
        console.log(CSRF_TOKEN);
        angular.bootstrap(document, ['app']);
      });
    });
  });
})();

当我检查它时,返回带有csrf_token的200。但是CSRF_TOKEN在应用程序中无处设置... console.log(CSRF_TOKEN)返回ReferenceError:CSRF_TOKEN未定义....

知道我做错了吗?

非常感谢你! : - )

2 个答案:

答案 0 :(得分:0)

我在laravel项目中也使用了角度。 这就是我的工作,它对我有用:

用于开始角度我使用此(我需要这[[与刀片{{语法没有冲突):

var laravelApp = angular.module('laravelApp', ['ui.bootstrap', 'ngResource'], function($interpolateProvider) {
    $interpolateProvider.startSymbol('[[');
    $interpolateProvider.endSymbol(']]');
});

在我的index.blade.php中,我将csrf标记定义为常量:

@section('javascripts')
    <script>
        angular.module("laravelApp").constant("CSRF_TOKEN", '{{ csrf_token() }}');
    </script>
@endsection

在我的控制器中,我也在角度中使用这个CSRF_TOKEN常量:

laravelApp.controller('startCtrl', function($scope, $http, CSRF_TOKEN, $window) {

    // init
    $scope.init = function () {
        $scope.template_choose = 'start';
        $scope.loadTemplateURL = '/template/load';
    }

    // POST Request with csrf_token
    $scope.loadActualTemplate = function() {
        $http.post($scope.loadTemplateURL, {
            '_token' : CSRF_TOKEN
        }).then(function(Response) {
            $scope.template_choose = '/template/choose/'+Response.data;
        });
    }

    // start
    $scope.init();
});
  

在刀片模板中定义CSRF_TOKEN。交付给你   控制器。在$ http.post中将其用作Post参数。还有这个   工作:))

答案 1 :(得分:0)

如果您有一个

,请将上面显示的代码移到services.js的顶部