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

问题描述 投票:0回答:3

你好,我正在尝试使用 Laravel Passport 来保护 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
        })
    },
php laravel vue.js laravel-passport
3个回答
0
投票

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

但是,如果您确实需要 Passport,首先要检查的是您是否遵循 Passport 安装说明中的每一步(https://laravel.com/docs/8.x/passport#installation),例如

php artisan passport:install


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');
}

0
投票

也许这可能是迟来的答案。但在清除我的缓存后,令牌现在就像一个魅力一样。

php artisan optimize:clear

帮助我解决问题。你也可以尝试一下

我发现在更改配置中的

auth.php
文件以指示
api
路由使用正确的设置后,Laravel 已经缓存了不同的值,这在尝试清除这些缓存时变得很困难

© www.soinside.com 2019 - 2024. All rights reserved.