मैंने लारावेल पासपोर्ट दस्तावेज़ में बताए अनुसार 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
) का उपयोग करके प्रमाणित किया गया है, यह सुनिश्चित करने के लिए कि आप प्रमाणित हैं, सभी पासपोर्ट मार्ग वेब मिडलवेयर का उपयोग करते हैं, जो एक सत्र आधारित प्रमाणीकरण है:
अपडेट 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 का उपयोग कर सकता हूं, लारावेल को बैकएंड के रूप में और अभी भी तीसरे पक्ष के अनुप्रयोगों के लिए टोकन को संभालने के लिए लारावेल पासपोर्ट का उपयोग कर सकता हूं। ?
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']);
डिफ़ॉल्ट शपथ मार्ग वेब और प्रमाणीकरण मिडलवेयर असाइन किए जाते हैं, इसलिए आपको उन्हें प्रमाणीकरण: एपीआई मिडलवेयर असाइन करने का एक तरीका खोजना होगा।
मैं स्थिरता के लिए एक एपीआई/शपथ उपसर्ग का उपयोग करना भी पसंद करता हूं।
आपके 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 कुकी मान का उपयोग करेगा।
हाय सब मेरे पास अनधिकृत का एक ही मुद्दा है। लेकिन मेरी गलती पोस्टमैन हैडर में है मैंने प्राधिकरण:'बियरर टोकन' सेट किया है। इसे प्रतिस्थापित किया गया है प्राधिकरण: वाहक टोकन.बहुत दुख की बात है.. अब यह काम कर रहा है
संबंधित सवाल
नए सवाल
php
PHP एक व्यापक रूप से उपयोग किया जाता है, उच्च-स्तरीय, गतिशील, वस्तु-उन्मुख, और व्याख्या की गई स्क्रिप्टिंग भाषा मुख्य रूप से सर्वर-साइड वेब विकास के लिए डिज़ाइन की गई है। PHP भाषा के बारे में सवालों के लिए इस्तेमाल किया।