我在routes/api.php上配置的laravel应用程序路由是。
<?php
use Illuminate\Http\Request;
Route::post('see_all_product', 'API\ProductController@see_all_product');
?>
问题是我想发送产品列表,但如果用户已通过身份验证,则发送产品收藏夹标志1,如果未通过身份验证,则发送返回收藏夹0
但这两种情况都发送带有喜爱标志的产品列表。
如果我用我的用户ID和密码登录,并发送请求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对于经过身份验证的用户和访客用户是相同的。
我在两种情况下都传递授权令牌,但中间件路由我获得用户详细信息,但非中间件路由我不获得用户信息。
请告诉我哪里可以错过什么?
3条答案
按热度按时间0vvn1miw1#
我想你可以用
$request->user()
来代替:l7wslrjt2#
我没有在旧版本的Laravel上测试这个方法,但它应该在最新版本上工作得很好。
您可以创建另一个中间件,允许以太网认证或访客用户继续。
如果用户通过了身份验证,那么中间件将为您准备Auth对象和auth()函数。
在app/Http/kernel.php下导入新创建的中间件
最后这样使用:
现在,auth()-〉user()将返回用户(如果用户通过了身份验证)和null(如果没有通过身份验证)
w8rqjzmb3#
关闭
['middleware'=> 'auth:api']
在你的
controller
中用途:$request->user('api');
。Guests
可以使用api
,但用户是null
;Auth
用户可以将api
作为真实的用户使用。备选: