具有Javascript的Laravel Passport API

时间:2019-02-10 10:24:32

标签: laravel laravel-passport

到目前为止,我将访问令牌存储在本地存储中。现在,我想将其移动到Cookie中。

因此,我将\ Laravel \ Passport \ Http \ Middleware \ CreateFreshApiToken :: class添加到Kernel.php中。我还更改了axios呼叫:

axios.get('/forum', {
    params: {
      filterBy: vm.filterBy,
      filterDirection: vm.filterDirection,
      theme: vm.theme
    },
    withCredentials: true,
    headers: {
      //'Authorization': 'Bearer ' + this.getToken,
      'X-Requested-With': 'XMLHttpRequest',
      'X-CSRF-TOKEN':window.Laravel.csrfToken
    }
  }).then(function (response) {
    vm.posts=response.data
  }).catch(function (error) {}); 

您可以看到我在从本地存储发送访问令牌的地方评论了Authorization标头。我看到CSRF令牌已添加到请求标头中,而访问令牌已保存在X-XSRF-TOKEN中。还有一个Cookie,其值为:XSRF-TOKEN :(令牌值)。

现在我遇到以下错误:未定义Route [登录]。

也许问题在于Cookie值中包含XSRF-TOKEN而不是laravel_token吗?

登录api调用

axios.post('/login', {
      username: credentials.username,
      password: credentials.password,
}).then(response => {
   const token = response.data.access_token

   localStorage.setItem('access_token', token)
   localStorage.setItem('username', credentials.username)
   resolve(response)
}).catch(error => {
   reject(error)
})

然后在后端,我使用以下命令创建令牌:

$response = $http->post(config('services.passport.login_endpoint'), [
            'form_params' => [
                        'grant_type' => 'password',
                        'client_id' => config('services.passport.client_id'),
                        'client_secret' => config('services.passport.client_secret'),
                        'username' => $request->username,
                        'password' => $request->password,
                    ]
            ]);

return json_decode((string) $response->getBody(), true);

0 个答案:

没有答案