簡體   English   中英

laravel 7 + vue.js 3 + 護照 401 未授權

[英]laravel 7 + vue.js 3 + passport 401 Unauthorized

你好,我試圖用 Laravel 護照保護 API,但總是向我拋出 401 未經授權。 我在哪里犯了錯誤? 有什么幫助嗎? 謝謝你。

我添加到 User.php HasApiTokens,

並取消注釋'App\\Model' => 'App\\Policies\\ModelPolicy'並添加到'App\\Model' => 'App\\Policies\\ModelPolicy'引導 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
        })
    },

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

但是如果你真的需要護照,首先要檢查你是否按照 Passport 的安裝說明( https://laravel.com/docs/8.x/passport#installation )中的每一步操作,比如php artisan passport:install

我認為你的 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');
}

可能這可能是遲到的答案。 但在清除我的緩存后,令牌現在就像一個魅力。

php artisan optimize:clear

幫助我解決我的問題。 你也可以試試這個

我發現在更改配置中的auth.php文件以指示api路由使用正確的設置后,Laravel 已經緩存了差異值,這在嘗試清除這些緩存時變得很困難

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM