Одно использование API для аутентифицированного и гостевого пользователя - PullRequest
1 голос
/ 03 июля 2019

Мой маршрут приложения laravel, настроенный на маршрутах / api.php, имеет вид.

<?php
use Illuminate\Http\Request;
Route::post('see_all_product',  'API\ProductController@see_all_product');
?>

Проблема в том, что я хочу отправить список продуктов, но если пользователь прошел проверку подлинности, отправьте флаг избранных продуктов 1, а если не прошел проверку подлинности, тоотправить вернуть избранное 0

Но в обоих случаях отправить список продуктов с флагом избранного.

Если я вошел в систему с моим идентификатором пользователя и паролем и отправил запрос на see_all_product на этот раз, яполучение пустого пользователя.

$user = $request->user();

Но если я задаю маршрут, как показано ниже, я получаю данные пользователя.

<?php
use Illuminate\Http\Request;
Route::group(['middleware' => 'auth:api'], function(){
        Route::post('see_all_product',  'API\ProductController@see_all_product');
});
?>

Теперь вопрос в том, как я могу получить подробности, если авторизация установлена ​​в заголовке с таким жеapi.

<?php
use Illuminate\Http\Request;
Route::post('see_all_product',  'API\ProductController@see_all_product');
?>

My see_all_product Функция

public function see_all_product(Request $request){ 
    try { 
        $user = $request->user(); 
    } catch (Exception $ex) { 
        Log::error($ex); 
    }
}

API одинаков как для аутентифицированного, так и для гостевого пользователя.

Я передаю токен авторизации вв обоих случаях, но в промежуточном программном обеспечении, я получаю информацию о пользователе, но не в промежуточном программном обеспечении. Я не получаю пользовательскую информацию.

Пожалуйста, укажите, где я могу что-то пропустить?

Ответы [ 2 ]

2 голосов
/ 03 июля 2019

Я думаю, что вы можете сделать это вместо $request->user():

if (auth('api')->check()) { 
    $user = auth('api')->user();
}
0 голосов
/ 03 июля 2019

выключить ['middleware' => 'auth: api']

use: $ request-> user ('api');в вашем контроллере.Гости могут использовать API, но пользователь имеет значение null;

Пользователи, использующие аутентификацию, могут использовать API в качестве реального пользователя.

alt: Auth :: guard ('api') -> user ();Auth ( 'API') -> пользователь ();

...