温馨提示:本文翻译自stackoverflow.com,查看原文请点击:laravel - Single API use for authenticated and guest user
laravel laravel-5 laravel-passport

laravel - 身份验证和来宾用户使用单一API

发布于 2020-03-27 10:19:41

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

<?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');
?>

我的see_all_product函数

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

身份验证和来宾用户的API相同。

我在两种情况下都通过了授权令牌,但是中间件路由我获得了用户详细信息,但是非中间件路由我没有获得用户信息。

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

查看更多

查看更多

提问者
Bhargav Patel
被浏览
135
Mesuti 2019-07-03 21:50

我认为您可以通过以下方式代替$request->user()

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