laravel 7 + vue.js 3 + 护照 401 未经授权

时间:2021-07-15 10:15:39

标签: php laravel vue.js laravel-passport

你好,我试图用 Laravel 护照保护 API,但总是向我抛出 401 未经授权的信息。 我在哪里犯了错误?有什么帮助吗?谢谢。

我在 User.php 中添加了 HasApiTokens,

并取消注释 'App\Model' => 'App\Policies\ModelPolicy' 并添加到 AutServiceProvider.php 中的引导 Passport:routes(),

auth.php 'api' => [
            'driver' => 'passport',]

在 RegisterController.php 中

 protected function create(array $data)
    {

        $user = User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
        $token = $user->createToken('API Token')->accessToken;
        return $user;
    }

在 bootstrap.js 中

const token = '3acdc8cddb433947ea7cc51de909fdc50dcdf601ac521ac37ff1b3ee3a61e47e2111d297a07e147e'

window.axios = require('axios');
window.axios.defaults.withCredentials = true;
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
window.axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;

在 Posts.vue axios

mounted() {
        axios.get('/public/api/posts').then(response=>{
            this.data =response.data
        })
    },

2 个答案:

答案 0 :(得分:0)

如果您不需要提供 oauth2,您可能需要查看 Laravel Sanctum,它更轻巧且更易于设置 (https://laravel.com/docs/8.x/passport#passport-or-sanctum)。

但如果您真的需要通行证,首先要检查您是否按照通行证安装说明 (https://laravel.com/docs/8.x/passport#installation) 中的每一步进行操作,例如 php artisan passport:install

答案 1 :(得分:0)

我认为你的 headers.common 中仍然需要 x-csrf-token

let csrf_token = document.head.querySelector('meta[name="csrf-token"]');

if (csrf_token) {
    window.axios.defaults.headers.common['X-CSRF-TOKEN'] = csrf_token.content;
} else {
    console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
}
相关问题