我已经使用Laravel 5.3安装了Passport并配置为使用个人访问令牌。我将用户名和密码发送到`/ oauth / token'路由并获取令牌。一切都很好,直到这里。
但是,如果我想以$user = Auth::user();
获取当前登录用户,我之前得到它,我得到null
值,因为Laravel没有为API令牌保留任何会话。在这种情况下,我如何获得当前用户?我可以修改任何文件以使当前用户获得令牌吗?
先谢谢Arif
答案 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