在来自react-native app的post请求中包含csrf令牌

时间:2017-06-09 07:14:08

标签: android laravel laravel-5 react-native

我有一个本机应用程序,可以从远程服务器发布和获取数据。在帖子中,我需要包含csrf令牌以避免令牌不匹配错误。这是后端laravel方法

//Android Login
    public function androidLogin(){

      return response()->json([
        'name' => 'Android Login',
        'route' => 'androidLogin'
            ]);
    }

这是反应本机代码(我已经删除了错误捕获代码)。

async handleSubmit(){
  var me = this.state.message;
  console.log('this connected',me);

      let response = await fetch('http://not-brusselus.be/androidLogin', {
                              method: 'POST',
                              headers: {
                                'Accept': 'application/json',
                                'Content-Type': 'application/json',
                                'X-CSRF-TOKEN':'csrf_field()'
                              },
                              body: JSON.stringify({
                                session:{
                                  email: 'chesterfield@gmail.com',
                                  password: '123456',
                                }
                              })
                            });
      //let res = await response.text();
      if (true) {
         console.log(response);
      } else {
          //Handle error
          //let error = res;
          //throw error;
      }

  }

回复显示了laravel的令牌不匹配页面。如何成功发送csrf令牌?。

1 个答案:

答案 0 :(得分:2)

将CSRF令牌挂在主laravel布局文件中定义的window之外:

window.Laravel = {
    csrfToken: '{{csrf_token()}}'
} 

然后在您的javascript请求中使用它:

...window.Laravel.csrfToken

修改

对于downvoter:这就是Laravel开箱即用的方式,并建议你也这样做。