मैंने लारावेल पासपोर्ट दस्तावेज़ में बताए अनुसार Vue घटकों को पंजीकृत किया है, और वे मेरे ऐप में भी दिखाएं:

<passport-clients></passport-clients>
<passport-authorized-clients></passport-authorized-clients>
<passport-personal-access-tokens></passport-personal-access-tokens>

हालांकि, वे कोई टोकन/क्लाइंट नहीं दिखाते हैं, और मैं कोई भी नहीं बना पा रहा हूं, मेरे आवेदन के कारण मैं "अनधिकृत" हूं:

GET http://spa.test/oauth/personal-access-tokens 401 
GET http://spa.test/oauth/clients 401 (Unauthorized)
GET http://spa.test/oauth/tokens 401 (Unauthorized)
GET http://spa.test/oauth/scopes 401 (Unauthorized)

यह मेरा AuthServiceProvider.php है

public function boot() {
     $this->registerPolicies();
     Passport::routes();
}

मैंने अपने app/User.php में यह विशेषता भी शामिल की है:

use HasApiTokens, Notifiable;

याद रखें, मैं लैरावेल को बैकएंड के रूप में और Vue.js को फ्रंटएंड के रूप में उपयोग कर रहा हूं, जो मुझे एक एसपीए देता है।

यह मेरा routes/api.php है:

Route::middleware('auth:api')->group(function () {
    Route::get('/user', function (Request $request) {
        return $request->user();
    });
});

यह मेरा routes.js है:

const routes = [
    {
        path: '/api/*',
    },

    /**
     * Handle Authentication
     */
    {
        path: '/',
        alias: '/login',
        name: 'login',
        component: Login,
        beforeEnter: ifNotAuthenticated,
    }
    /**
     * Handle logged in pages
     */
    {
        path: '/dashboard',
        name: 'layout',
        component: MasterLayout,
        beforeEnter: ifAuthenticated,
        children: [{
            path: '/dashboard',
            name: 'dashboard',
            component: Dashboard
        }, {
            path: '/home',
            name: 'home',
            component: Home
        }]
    },
];

अपडेट 1:

मैं देखता हूं कि समस्या यह है कि मुझे पासपोर्ट (auth:api) का उपयोग करके प्रमाणित किया गया है, यह सुनिश्चित करने के लिए कि आप प्रमाणित हैं, सभी पासपोर्ट मार्ग वेब मिडलवेयर का उपयोग करते हैं, जो एक सत्र आधारित प्रमाणीकरण है:

enter image description here

अपडेट 2:

कृपया मेरा अनुरोध शीर्षलेख देखें:

Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate
Accept-Language: da-DK,da;q=0.9,en-US;q=0.8,en;q=0.7,nb;q=0.6
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImY5OGNiZjBhYmNjZGIyNzk1ZDRhOTllODEwZTQxMzFhMjMwNzhhNzVjYWMzYmM0Y2I2Yzg3NjM3ZDFlMzdkNmI3YzU4YWIzNWM4YmU5MDIxIn0.eyJhdWQiOiIyIiwianRpIjoiZjk4Y2JmMGFiY2NkYjI3OTVkNGE5OWU4MTBlNDEzMWEyMzA3OGE3NWNhYzNiYzRjYjZjODc2MzdkMWUzN2Q2YjdjNThhYjM1YzhiZTkwMjEiLCJpYXQiOjE1MzU0NDU2MzgsIm5iZiI6MTUzNTQ0NTYzOCwiZXhwIjoxNTY2OTgxNjM3LCJzdWIiOiIyIiwic2NvcGVzIjpbXX0.KUSlBt4IQkqYec2TzOTY3QGFxOfuS-SdYpWc26sLDqXpKdRLAqW4XtDOYwzrMtaO51iAuUR1WIGpShaIOZJUhJ_Ya082LVJvuA8tZziAHvjgjReKG_ou6gGhxIWsD8-g88sd0eSyDMfsJBtTs2jrHTJsHQLjFtgwm1RLlSRSkYjO4Tn3fU0dWNUHvcMWVxbuKN_bqC0lpCakjxSQKZe_ep6XpdyFfO84ncsfigVVrfJE3wpJliUfwwv16CpLU0KeNvGhNmKguASCYh9-lWOHPBCMW2S5rF85QgzpTwqYSr5QrIQmqrRKSv6Go545IKN_Hy-xigFV17im-wlVXGOVYgv9C0DJOwCCLOOHB9eMTFO2TGTI5-CLzC8Z9hxHSfMArGGGsTrw6wH45cszvgXH975dk2l1-2rWnVwOMd6-Z2_45Ut0TbomUAfA70OrfSyluxuKKfzNzJ9uobfXB6bGZrIkQMBOPw19N05IkaADAIkip9N99iJ-bF2dCk3GUREmtZPVHo_Yzp0-Ovj0W42eGG5uI_HEhgiuyKdLDWxb92dH_91XhTawhcREx9C1xXQNOUWtT_K2IWaywldfaWy41ZApmd2ZQzhyFxHp28ll1IHKEJRsr88mv4Hjv2hLt5-HeTuL1PW5gaqPZZE5NttpTyK4a2gV7CTtAgm3E_h_Q_Q
Connection: keep-alive
Content-Length: 39
Content-Type: application/json;charset=UTF-8
Cookie: access_token=Bearer%20eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImY5OGNiZjBhYmNjZGIyNzk1ZDRhOTllODEwZTQxMzFhMjMwNzhhNzVjYWMzYmM0Y2I2Yzg3NjM3ZDFlMzdkNmI3YzU4YWIzNWM4YmU5MDIxIn0.eyJhdWQiOiIyIiwianRpIjoiZjk4Y2JmMGFiY2NkYjI3OTVkNGE5OWU4MTBlNDEzMWEyMzA3OGE3NWNhYzNiYzRjYjZjODc2MzdkMWUzN2Q2YjdjNThhYjM1YzhiZTkwMjEiLCJpYXQiOjE1MzU0NDU2MzgsIm5iZiI6MTUzNTQ0NTYzOCwiZXhwIjoxNTY2OTgxNjM3LCJzdWIiOiIyIiwic2NvcGVzIjpbXX0.KUSlBt4IQkqYec2TzOTY3QGFxOfuS-SdYpWc26sLDqXpKdRLAqW4XtDOYwzrMtaO51iAuUR1WIGpShaIOZJUhJ_Ya082LVJvuA8tZziAHvjgjReKG_ou6gGhxIWsD8-g88sd0eSyDMfsJBtTs2jrHTJsHQLjFtgwm1RLlSRSkYjO4Tn3fU0dWNUHvcMWVxbuKN_bqC0lpCakjxSQKZe_ep6XpdyFfO84ncsfigVVrfJE3wpJliUfwwv16CpLU0KeNvGhNmKguASCYh9-lWOHPBCMW2S5rF85QgzpTwqYSr5QrIQmqrRKSv6Go545IKN_Hy-xigFV17im-wlVXGOVYgv9C0DJOwCCLOOHB9eMTFO2TGTI5-CLzC8Z9hxHSfMArGGGsTrw6wH45cszvgXH975dk2l1-2rWnVwOMd6-Z2_45Ut0TbomUAfA70OrfSyluxuKKfzNzJ9uobfXB6bGZrIkQMBOPw19N05IkaADAIkip9N99iJ-bF2dCk3GUREmtZPVHo_Yzp0-Ovj0W42eGG5uI_HEhgiuyKdLDWxb92dH_91XhTawhcREx9C1xXQNOUWtT_K2IWaywldfaWy41ZApmd2ZQzhyFxHp28ll1IHKEJRsr88mv4Hjv2hLt5-HeTuL1PW5gaqPZZE5NttpTyK4a2gV7CTtAgm3E_h_Q_Q; laravel_token=eyJpdiI6IitjQitXXC9iZHd1REtLOWNlZk5qa1d3PT0iLCJ2YWx1ZSI6Im9odjA4SmlqOEY0WndLalpwT29LUGh3R3krXC95eG9sSmtLSHlwYWZlNWFcL1lHbHE2WnRNYWk4UUViVzhUSEpRRzVlWThrdmF4czIrMysrYUZ6UlFzdHVMMDFLMER2VDdUazZDQXBWXC9LMVVZRzdHY2F2RXpFMlRnNmdpaXVXXC9GNFhBK3ZGUm5VdWxKamxsV1RLMDIrTUY1K0JaazBsc2hcL1dHUlBoVXNcL1owalwva3NoVlVzeGc2VElybFwvMFhkN1I0S3g2ZHIralJ4dzIrU3l2aUc2cFwvV1pvQjFRWTRGVXdCdDhwb3UxVXhJeGhpcjNtKzFocjByd25ZQnpzUzVEYUo3dzB0TExqTUVkVCt6ZVFjQ0t4S2dRPT0iLCJtYWMiOiI3NWI0ZjU3OGNhZWQwMTQzYjE1MDBhYzEwNDc4MjBkYzMxZjU5NzI4OGJiMjJmYjQ5NjBhZmMxZTU5ZGZiNmMxIn0%3D; XSRF-TOKEN=eyJpdiI6IkhrQnB1SCs5dWV4OU8zck10djZRbEE9PSIsInZhbHVlIjoieFwvZTJCUFVRZ0haQWNZVjBvUkJ2Q1FTSGtGTHM5SjBXTndOeXBFc2o2Q3pjclRRbjFqeHVpclJOQ3FPTUdKQ2t4M0g4bE5VUXRcL0twdXFNR25IT1NBdz09IiwibWFjIjoiYjI5MzRkNTEwMWZhNWUzNTI5ZTY2OTg5YTYxODQ3MDBkMTU2ZjJjZTE3YzdhZDc2ODMwNjI0NzlmMmQyZTY1NyJ9; laravel_session=eyJpdiI6InY1V3RmeVhvaUd2S2lsRE8wT0tTcHc9PSIsInZhbHVlIjoiQUppMThcL1hka3RXT0NIRWxKNHNUNm5xNjBuaGZSMHpGTXN5czdlWXBqN3dtR2E0UzdQNGFJbk5pS3ZLN1FxZVdnSlVXaE1BaFhVR1lpZnVoek9TMlBBPT0iLCJtYWMiOiIzYmZhYjM5Y2EzYzgwYjdmYTA0OTdjYmYwZGQ2ZThlMDk4YWQ4N2ZiNzRiMjJlZTVkMjM1MjZkYjAyNTZkMTdkIn0%3D
Host: spa.test
Origin: http://spa.test
Referer: http://spa.test/
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
X-CSRF-TOKEN: v9z5uFoGWPGprc3kJaCMhLpHGbvgQ7usXLwZu11e
X-Requested-With: XMLHttpRequest
X-XSRF-TOKEN: eyJpdiI6IkhrQnB1SCs5dWV4OU8zck10djZRbEE9PSIsInZhbHVlIjoieFwvZTJCUFVRZ0haQWNZVjBvUkJ2Q1FTSGtGTHM5SjBXTndOeXBFc2o2Q3pjclRRbjFqeHVpclJOQ3FPTUdKQ2t4M0g4bE5VUXRcL0twdXFNR25IT1NBdz09IiwibWFjIjoiYjI5MzRkNTEwMWZhNWUzNTI5ZTY2OTg5YTYxODQ3MDBkMTU2ZjJjZTE3YzdhZDc2ODMwNjI0NzlmMmQyZTY1NyJ9

इस बारे में कोई भी विचार कि मैं अभी भी कैसे एक फ्रंटएंड के रूप में Vue का उपयोग कर सकता हूं, लारावेल को बैकएंड के रूप में और अभी भी तीसरे पक्ष के अनुप्रयोगों के लिए टोकन को संभालने के लिए लारावेल पासपोर्ट का उपयोग कर सकता हूं। ?

13
oliverbj 26 अगस्त 2018, 20:27
क्या आपने अनुरोधों के साथ अपनी लार्वा सत्र कुकी भेजने का प्रयास किया है?
 – 
Chad
29 अगस्त 2018, 16:29
हां, इस जानकारी के साथ मेरे ओपी को अपडेट किया।
 – 
oliverbj
29 अगस्त 2018, 16:56
आप लारवेल और पासपोर्ट के किस संस्करण का उपयोग कर रहे हैं?
 – 
matpb
31 अगस्त 2018, 03:20
दोनों का नवीनतम संस्करण (5.6, 7.0)। यह एक ताजा स्थापना है।
 – 
oliverbj
31 अगस्त 2018, 09:20

3 जवाब

थोड़ी देर पहले हम इसी मुद्दे से गुज़रे थे, लेकिन मैं देख सकता हूँ कि हमने kernel.php में वेब मिडलवेयर जोड़ने के लिए rel="nofollow noreferrer">laravel दस्तावेज़:

'web' => [
    // Other middleware...
    // ...
    // This Adds a cookie containing a JWT token for Laravel Passport
    \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
],

संभावित रूप से प्रासंगिक: हमारे अनुरोधों को बैक-एंड तक सरल बनाने के लिए हमने api/ के साथ प्रीफ़िक्स अनुरोधों के लिए axios सेटअप किया था, जिसका अर्थ था कि हमें इसकी अपेक्षा करने के लिए Passport को भी बताना होगा। AuthServiceProvider.php में:

Passport::routes(null, ['prefix' => 'api/oauth']);
2
Rich 30 अगस्त 2018, 17:07
पिछले लार्वा संस्करण + दस्तावेज़ पर पासपोर्ट ट्यूटोरियल के साथ त्रुटिपूर्ण रूप से कार्य करना!
 – 
cesartalves
31 मार्च 2020, 17:16

डिफ़ॉल्ट शपथ मार्ग वेब और प्रमाणीकरण मिडलवेयर असाइन किए जाते हैं, इसलिए आपको उन्हें प्रमाणीकरण: एपीआई मिडलवेयर असाइन करने का एक तरीका खोजना होगा।

मैं स्थिरता के लिए एक एपीआई/शपथ उपसर्ग का उपयोग करना भी पसंद करता हूं।

आपके AuthServiceProvider में

Passport::routes(null, array('prefix' => 'api/oauth', 'middleware'  =>  array('auth:api', 'web', 'auth')));

यह आपको एपी/ओथ उपसर्ग देगा और ऑथ जोड़ देगा: एपीआई मिडलवेयर ताकि आप बियरर टोकन के माध्यम से प्रमाणित कर सकें।

ध्यान रखें कि आप कुछ सीएसआरएफ टोकन मुद्दों का सामना करेंगे जो उपयोग कर रहे हैं

Passport::ignoreCsrfToken(true);

हल होता नहीं दिख रहा।

आपको उचित हेडर में पास होना होगा (सीएसआरएफ प्रोटेक्शन के तहत देखें: https://laravel.com/docs/6.x/passport# Consumer-your-api-with-javascript):

प्रमाणीकरण की इस पद्धति का उपयोग करते समय, आपको यह सुनिश्चित करना होगा कि आपके अनुरोधों में एक वैध सीएसआरएफ टोकन हेडर शामिल है। डिफ़ॉल्ट Laravel JavaScript मचान में एक Axios इंस्टेंस शामिल है, जो समान-मूल अनुरोधों पर X-XSRF-TOKEN शीर्षलेख भेजने के लिए स्वचालित रूप से एन्क्रिप्टेड XSRF-TOKEN कुकी मान का उपयोग करेगा।

1
Anthony Corbelli 24 सितंबर 2019, 16:47

हाय सब मेरे पास अनधिकृत का एक ही मुद्दा है। लेकिन मेरी गलती पोस्टमैन हैडर में है मैंने प्राधिकरण:'बियरर टोकन' सेट किया है। इसे प्रतिस्थापित किया गया है प्राधिकरण: वाहक टोकन.बहुत दुख की बात है.. अब यह काम कर रहा है

1
Krishna vala 16 अप्रैल 2020, 09:06