首页 > 解决方案 > 如何根据当前经过身份验证的用户动态设置 Laravel 配置?

问题描述

我正在使用 GrahamCampbell 的 Gitlab API 包装器,它具有令牌和方法的配置变量。令牌是用于对 api 进行身份验证的秘密令牌,方法是使用的身份验证类型。我正在使用 oauth,所以我的方法设置为“oauth”。

但是,该令牌要么由请求生成,要么作为加密字符串存储在我的数据库中的 oauth 工作流中的用户模型上

我在哪里可以将该 oauth 令牌输入到用户登录工作流程中的 gitlab 配置中,以允许我代表当前登录的用户向 api 发出请求?

显然,我不能只将配置项设置为 'token' => $user->gitlab_token,因为在大多数 laravel 类存在之前访问配置。

还是我的任何假设都不正确?

标签: phplaravel

解决方案


我认为有多种方法可以做到这一点。我将提供一个替代方案:

当用户通过会话进行身份验证时,该Authenticated事件被触发,因此您可以侦听此事件并相应地设置令牌。在您的EventServiceProvider添加中:

Event::listen(Authenticated::class, function (Authenticated $event) {
    config([ 'gitlab.token' => $event->user->token ]);
});

这将确保在用户通过身份验证时更新配置。


推荐阅读