[英]Angular JS & CSRF with RESTFull API Laravel
无法理解如何使其工作...我试图从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']);
});
});
});
})();
当我检查它返回200与csrf_token。 但是,CSRF_TOKEN在应用程序中没有设置。console.log(CSRF_TOKEN)返回ReferenceError:CSRF_TOKEN未定义。
知道我在做什么错吗?
非常感谢! :-)
我也在laravel项目中也使用了angular。 这是我的工作,它对我有用:
为了开始角度,我使用了这个(我需要这个[[与刀片{{语法没有冲突。):
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参数。 这有效:)
如果您有一个,将上面显示的代码移到services.js顶部
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.