首页 > 解决方案 > laravel 7 + vue.js 3 + 护照 401 未经授权

问题描述

您好,我正在尝试使用 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
        })
    },

标签: phplaravelvue.jslaravel-passport

解决方案


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

php artisan optimize:clear

帮助我解决我的问题。你也可以试试这个

我发现在更改auth.php配置中的文件以指示api路由使用正确的设置后,Laravel 已经缓存了差异值,这在尝试清除这些缓存时变得很困难


推荐阅读