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