带有Passport的Laravel 5.3:使用个人访问令牌获取当前用户

时间:2017-02-17 11:31:23

标签: php api laravel-5 laravel-passport

我已经使用Laravel 5.3安装了Passport并配置为使用个人访问令牌。我将用户名和密码发送到`/ oauth / token'路由并获取令牌。一切都很好,直到这里。

但是,如果我想以$user = Auth::user();获取当前登录用户,我之前得到它,我得到null值,因为Laravel没有为API令牌保留任何会话。在这种情况下,我如何获得当前用户?我可以修改任何文件以使当前用户获得令牌吗?

先谢谢Arif

1 个答案:

答案 0 :(得分:2)

首先,我在OAuth2流程中使用Passport和password_clients。作曲家中我的Lumen / Laravel版本是5.4。*

我在我的Lumen应用程序中使用以下语句(注意我没有使用外墙):

$user = app('auth')->guard()->user()

这可能相当于门面电话:

$user = Auth::guard()->user()

希望这会有所帮助..

亲切的问候,

PS。为了计算在不使用外墙时返回的类,我发现自己在做例如。一个echo get_class(app('auth'))来获取类并告诉我的IDE变量$auth是什么类型..

我的一个流明控制器的片段

$auth = app('auth');
// echo get_class($auth); to get class
// -> \Illuminate\Auth\AuthManager in this case
/* @var $auth \Illuminate\Auth\AuthManager */

$guard = $auth->guard();
// idem as above
/* @var $guard \Illuminate\Auth\RequestGuard */

$user = $guard->user();
/* @var $auth \App\Auth\User */

// this tells Webstorm/Netbeans/.. to consider $auth an instance of AuthManager and enables autocompletion of class methods