Warm tip: This article is reproduced from stackoverflow.com, please click
laravel laravel-5 laravel-passport

Single API use for authenticated and guest user

发布于 2020-03-27 10:15:39

My laravel application route configured on routes/api.php is.

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

Issue is i want to sent list of product but if user authenticated then send product favorite flag 1, and if not authenticated then send return favorite 0

But both case send product list with favorite flag.

If i logged in with my user id and password and send request for see_all_product that time i m getting blank user.

$user = $request->user();

But if i set route like below i m getting user details.

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

Now issue is how can i get details if authorization set in the header with same api.

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

My see_all_product Function

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

API is same for both authenticated and guest user.

I pass authorization token in both case but middleware route i get user details but non middleware route i dont get user information.

Please guide me where i can miss something?

Questioner
Bhargav Patel
Viewed
76
Mesuti 2019-07-03 21:50

I think you can do it by the way instead of $request->user():

if (auth('api')->check()) { 
    $user = auth('api')->user();
}