Angular 带有 RESTFull 的 JS 和 CSRF API Laravel
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']);
});
});
});
})();
当我用 csrf_token 检查它时 return 是 200。但是 CSRF_TOKEN 在应用程序中没有设置...... console.log(CSRF_TOKEN) return ReferenceError: CSRF_TOKEN is not defined....
知道我做错了什么吗??
非常感谢! :-)
我也在我的 laravel 项目中使用 angular。
这是我所做的,对我有用:
用于启动 angular 我使用这个(我需要这个 [[ 因为与 blade {{ 语法没有冲突。):
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
在我的控制器中,我也在 angular 中使用这个 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();
});
Define your CSRF_TOKEN in your blade template. Deliver it in your
controller. Use it as a Post Parameter in your $http.post. And this
works :)
如果您有
,请将上面显示的代码移至您的services.js之上
无法理解如何让它工作...我正在尝试从 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 检查它时 return 是 200。但是 CSRF_TOKEN 在应用程序中没有设置...... console.log(CSRF_TOKEN) return ReferenceError: CSRF_TOKEN is not defined....
知道我做错了什么吗??
非常感谢! :-)
我也在我的 laravel 项目中使用 angular。 这是我所做的,对我有用:
用于启动 angular 我使用这个(我需要这个 [[ 因为与 blade {{ 语法没有冲突。):
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
在我的控制器中,我也在 angular 中使用这个 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();
});
Define your CSRF_TOKEN in your blade template. Deliver it in your controller. Use it as a Post Parameter in your $http.post. And this works :)
如果您有
,请将上面显示的代码移至您的services.js之上