我在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相同。
我在两种情况下都通过了授权令牌,但是中间件路由我获得了用户详细信息,但是非中间件路由我没有获得用户信息。
请指导我在哪里我会错过什么?
我认为您可以通过以下方式代替$request->user()
:
if (auth('api')->check()) {
$user = auth('api')->user();
}
空白用户无法正常工作。如果我将路线更改为此,则可以正常工作,但面临非授权用户的问题。
<?php use Illuminate\Http\Request; Route::group(['middleware' => 'auth:api'], function(){ Route::post('see_all_product', 'API\ProductController@see_all_product'); }); ?>
然后您会遇到更深层次的问题,因为这应该在未授权的端点上起作用。您的监护人和提供者是什么?身份验证设置中是否有任何特定设置?
我更改了回复。您是否会检查并再试一次?