加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何使用Laravel API在AngularJS表单内发送csrf_token()?

发布时间:2020-12-17 08:16:29 所属栏目:安全 来源:网络整理
导读:我正在努力建立一个角度的卧铺休息应用程序。我可以得到我的数据库的意见。当我尝试添加新的项目。我收到500错误告诉我不匹配的csrf令牌。 我的表单布局是: form class="form-horizontal" ng-submit="addItem()" input type="text" ng-model="itemEntry" pl
我正在努力建立一个角度的卧铺休息应用程序。我可以得到我的数据库的意见。当我尝试添加新的项目。我收到500错误告诉我不匹配的csrf令牌。
我的表单布局是:
<form class="form-horizontal" ng-submit="addItem()">

  <input type="text" ng-model="itemEntry" placeholder="Type and hit Enter to add item">
</form>

这是我如何尝试添加到数据库的项目:

$scope.addItem = function(CSRF_TOKEN) {
    $http.post('/shop',{ text: $scope.itemEntry,csrf_token: CSRF_TOKEN} ).success(function(data,status) {
        if(data) {
            var last = _.last($scope.items);
            _token = CSRF_TOKEN;
            $scope.items.push({text: $scope.itemEntry,bought: false,id: (last.id + 1) });
            $scope.itemEntry = '';
            console.log($scope.items);
        } else {
            console.log('There was a problem. Status: ' + status + '; Data: ' + data);
        }
    }).error(function(data,status) {
            console.log('status: ' + status);
        });

}

这是我的应用程序使用的过滤器:

Route::filter('csrf',function()
{
    if (Session::token() != Input::get('_token'))
    {
        throw new IlluminateSessionTokenMismatchException;
    }
});

在我的刀片视图中,我使用它,它的作品:

<input type="hidden" name="_token" value="{{ csrf_token() }}" />

当我使用html表单时,如何发送csrf_token?

谢谢

编辑1:
添加标题来发布这样的请求不会给出错误。

$http({
    method  : 'POST',url     : '/shop',data    :  $scope.itemEntry,// pass in data as strings
    headers : { 'Content-Type': 'application/x-www-form-urlencoded' }   
  });
一个选项是将CSRF令牌注入一个常量。在您的头标中附加以下内容:
<script>
  angular.module("app").constant("CSRF_TOKEN",'{{ csrf_token() }}');
</script>

然后在您的模块方法中,可以在需要时注入。

app.factory("FooService",function($http,CSRF_TOKEN) {
    console.log(CSRF_TOKEN);
};

也许你会有兴趣了解这个sample Laravel + AngularJS project的源代码。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读