我在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都是相同的。
我都通过授权令牌,但是中间件路由我获得了用户详细信息,但是非中间件路由我没有获得用户信息。
请指导我哪里可以错过什么?
答案 0 :(得分:2)
我认为您可以代替$request->user()
来做到这一点:
if (auth('api')->check()) {
$user = auth('api')->user();
}
答案 1 :(得分:0)
关闭['middleware'=>'auth:api']
使用:$ request-> user('api');在您的控制器中。 来宾可以使用api,但用户为null;
身份验证用户可以将api用作真实用户。
alt: Auth :: guard('api')-> user(); auth('api')-> user();