2016-08-30 18 views
10

Mam nadzieję, że ktoś może wyjaśnić, dlaczego jestem unauthenticated, gdy już przeprowadziłem pomyślny proces uwierzytelniania Oauth 2.Paszport - "Nieuwierzytelniony". - Laravel 5.3

Przygotowałem pakiet Passport, podobnie jak w dokumentacji Laravel i pomyślnie uzyskałem uwierzytelnienie, otrzymałem wartość tokenu i tak dalej. Ale kiedy próbuję wykonać żądanie get na, powiedzmy, /api/user, otrzymuję w odpowiedzi błąd Unauthenticated. Używam wartości tokena jako nagłówka o nazwie klucza Authorization, zgodnie z opisem w dokumentacji.

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

Ta funkcja jest przypuszczać, aby oddać moje ja jako uwierzytelnionego użytkownika, ale jestem tylko coraz Unauthenticated. Podobnie, jeśli po prostu zwrócę pierwszego użytkownika, ponownie otrzymuję numer Unauthenticated.

Route::get('/test', function(Request $request) { 
    return App\User::whereId(1)->first(); 
})->middleware("auth:api"); 

W kursie z Laracast, prowadząc przez konfigurację Passport, prowadnicę nie ma ->middleware("auth:api") w swoich trasach. Ale jeśli jej tam nie ma, to w ogóle nie ma potrzeby uwierzytelniania!

Proszę, wszelkie sugestie lub odpowiedzi są bardziej niż mile widziane!

+0

Może sprawdzić, czy wysyłasz „Bearer ” w nagłówku Autoryzacja – Urizev

+0

Im nawet coraz „Nieuwierzytelnione” dostaję natychmiast przekierowany do strony logowania. –

+0

Wszystkie "trasy", które zapisujesz w pliku 'routes \ api.php' są przez ** domyślnie ** chronione ** oprogramowaniem pośrednim ** api. Możesz więc usunąć swoją wyraźną wzmiankę o '-> middleware (" auth: api ")'. –

Odpowiedz

0

Miałem dokładnie ten sam błąd, ponieważ zapomniałem wstawić http przed nazwą projektu.

http missing

+2

skopiuj kod, a nie obraz podobny do tego –

3

Musisz ustawić datę ważności dla tokenów generujących jesteś,

ustawić metodę ładowania w swoim AuthServiceProvider coś jak poniżej kod i spróbuj generowania nowego tokena. Paszporty domyślny ważności zwraca liczbę ujemną

public function boot() 
{ 
    $this->registerPolicies(); 
    Passport::routes(); 
    Passport::tokensExpireIn(Carbon::now()->addDays(15)); 
    Passport::refreshTokensExpireIn(Carbon::now()->addDays(30)); 
} 
+0

'Domyślnie, Paszport wydaje długotrwałe tokeny dostępu, które nigdy nie muszą być odświeżane. - https://laravel.com/docs/5.4/passport#configuration – adamj

1

Sprawdź swój model użytkownika i tabeli bazy danych, jeśli zostały zmodyfikowane pierwotną nazwę pola id powiedzieć coś innego niż „id” lub nawet „user_id”, można uruchomić w kwestii . Rozwiązałem problem związany z modyfikacją głównego pola id w moim modelu użytkownika i tabeli bazy danych, aby powiedzieć "acct_id", zamiast utrzymywać go jako "id", a wynik był "Nieuwierzytelniony" Kiedy próbowałem pobrać obiekt użytkownika przez GET/użytkownika przez oprogramowanie pośredniczące auth: api. Pamiętaj, że wypróbowałem każdą poprawkę pod słońcem, dopóki nie zdecydowałem się na samodzielne debugowanie.

TAKŻE Pamiętaj, aby zaktualizować swój paszport. Tak jak w ostatnich tygodniach dokonano pewnych zmian.

Połączy moje referencje poniżej, jest BARDZO szczegółowy i dobrze zdefiniowany, co zrobiłem i jak doszłam do rozwiązania.

Ciesz się!

https://github.com/laravel/passport/issues/151

Powiązane problemy