无法理解如何使其工作......我正在尝试从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未定义....
知道我做错了吗?
非常感谢你! : - )
答案 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的顶部