4

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

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

提前致谢

4

1 回答 1

3

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

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

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

这可能相当于外观调用:

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

希望这可以帮助..

亲切的问候,

PS。为了弄清楚不使用门面时返回的类,我发现自己在做例如。aecho get_class(app('auth'))获取课程并告诉我的 IDE 是什么类型的变量$auth..

来自我的 Lumen 控制器之一的片段

$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
于 2017-03-06T14:32:02.303 回答