获取经过身份验证的用户 Laravel/Lumen Passport

Posted

技术标签:

【中文标题】获取经过身份验证的用户 Laravel/Lumen Passport【英文标题】:Get Authenticated User Laravel/Lumen Passport 【发布时间】:2018-05-04 12:54:31 【问题描述】:

我正在使用 lumen 构建我的 api 和护照以进行 api 身份验证。

我的用户信息都记录在用户表中,而用户的密码存储在另一个表中(登录名)-(一对一关系)

授权一切正常(我可以创建不记名令牌并使用它访问 auth:api 中间件) 但问题是一旦我使用不记名令牌登录我无法获取经过身份验证的用户信息。

我试过了

Auth::user();
$request->user();
Auth::guard('auth')->user();

但是所有这些函数都返回 null

请帮助我访问经过身份验证的用户。

web.php

$router->group(['prefix' => 'dev', 'namespace' => 'Dev'], function ($router) 
    //Generates Bearer Access Token for api access
    $router->post('accessToken', 'TestController@createAccessToken');

    //protected api
    $router->group(['prefix' => 'auth', 'middleware' => 'auth:api'], function ($router) 
        $router->get('authenticated-user', 'TestController@getAuthenticatedUser');
    );
);

TestController.php

public function getAuthenticatedUser(Request $request)

    //die('test');
    dd(Auth::user());//returns null

【问题讨论】:

您是否在受auth:api 中间件保护的路由内访问这些函数? 在 auth:api 中间件 @patricus 中是的 你能显示你的路由和控制器代码吗? 问题现在包含路由和控制器代码 抱歉,错过了您使用的是 lumen。您采取了哪些步骤来设置流明的护照? 【参考方案1】:

您是否已经使用过 Illuminate\Http\Request? 还是 Dingo\Api\Http\Request?

function getAuthUserData(Request $request)

    $userDt=$request->user();

    return $userDt;

这对我有用

【讨论】:

【参考方案2】:

根据 Laravel Lumen 7.x 的文档,只要您通过 url Lumen Doc 传递令牌,您就可以使用 Auth::user() 或 $request->user() 来获取经过身份验证的用户

【讨论】:

您给出的解决方案是不使用护照。 我很确定这是正确的,因为这是我正在使用的,但如果我尝试 e var_dump($request->user()) 或 dd($request->user()) 我得到空值或没有响应(我不知道为什么),但如果我使用 var_dump($request->user()->id) 我得到当前用户 ID。

以上是关于获取经过身份验证的用户 Laravel/Lumen Passport的主要内容,如果未能解决你的问题,请参考以下文章

Auth 尝试方法在 Laravel/Lumen + JWT + 用户自定义模型中如何工作

Spring-Security:优化获取当前经过身份验证的用户...

OpenFire:在 IQHandler 中,如何获取发送它的经过身份验证的用户?

使用 Laravel Passport 获取经过身份验证的用户并授予密码

从 Blazor 应用中的中间件类获取经过身份验证的用户

Laravel/Lumen Tymon/JWT 通过电话号码和密码