当我使用auth:api中间件获取登录用户详细信息时,它会在我的控制器函数中返回包含详细信息的用户对象.
api.php (with auth:api middleware returns User object)
Route::group(['middleware' => 'auth:api'], function() {
Route::get('users/mentor_details/{uuid}','UserController@getMentorProfileDetails');
});
Run Code Online (Sandbox Code Playgroud)
但是当我试图在此auth:api中间件之外登录用户详细信息时,它返回null.
api.php (without auth:api middleware return null)
Route::get('users/mentor_details/{uuid}','UserController@getMentorProfileDetails');
Run Code Online (Sandbox Code Playgroud)
pat*_*cus 22
如果未提供auth中间件,或未指定防护,则使用默认防护来确定用户.除非你在config/auth.php文件中更改了此内容,否则默认后卫就是web后卫.
因此,当您转到不受特定身份验证中间件保护的路由时,加载的用户是web后卫提供的用户.
因此,即使您可能正在发送持有者令牌以使用特定用户,但是web警卫对此没有任何了解,并且由于您没有用户通过web警卫登录,因此您正在获得null用户.
你有四个选择:
确保路由受auth:api中间件保护,中间件指定api防护.但是,这不允许访客访问网址.
将默认警卫更改为api您的config/auth.php文件.这可能不是你想要做的,特别是如果你有普通的网络用户.
告诉您希望用户来自api警卫的请求.该$request->user()方法将guard作为参数,因此如果这样做$request->user('api'),它将使用apiguard 检索用户.
api直接从警卫处获取用户:auth()->guard('api')->user().
| 归档时间: |
|
| 查看次数: |
6225 次 |
| 最近记录: |