身份验证和访客用户的单一 API 使用

Bha*_*tel 2 laravel laravel-5 laravel-passport

我在 routes/api.php 上配置的 Laravel 应用程序路由是。

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

问题是我想发送产品列表,但如果用户通过身份验证,则发送产品收藏标志 1,如果未通过身份验证,则发送返回收藏夹 0

但是两种情况都发送带有最喜欢标志的产品列表。

如果我使用我的用户 ID 和密码登录并发送对see_all_product 的请求,那么我将获得空白用户。

$user = $request->user();
Run Code Online (Sandbox Code Playgroud)

但是,如果我设置如下路线,我将获取用户详细信息。

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

现在的问题是,如果在具有相同 api 的标头中设置了授权,我如何获取详细信息。

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

我的see_all_product功能

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

API 对于经过身份验证的用户和来宾用户都是相同的。

我在这两种情况下都传递了授权令牌,但中间件路由我得到了用户详细信息,但非中间件路由我没有得到用户信息。

请指导我在哪里可以错过什么?

Mes*_*uti 5

我认为你可以这样做,而不是$request->user()

if (auth('api')->check()) { 
    $user = auth('api')->user();
}
Run Code Online (Sandbox Code Playgroud)