我有一个 Laravel 版本 6 应用程序。我使用JWT 包进行身份验证。
路由定义如下:
// route/api.php
Route::middleware('auth:api')->group(function () {
Route::apiResources([
'genders' => 'API\GenderController'
]);
});
在控制器内部,我有 5 个功能index、store、和。showupdatedestroy
在这些函数中运行任何代码之前,我需要为当前用户设置语言环境,如下所示:
public function index()
{
$locale = request()->user()->lang;
app()->setLocale($locale);
// Rest of the function
}
我的控制器类扩展了一个BaseController类。由于 Restful API 是无状态的,我需要在每次用户发送 API 请求时设置语言环境。现在的问题是,最好的地方在哪里,我该怎么做?
我试图在 BaseController 的构造函数中执行此操作,但似乎middleware('auth:api')尚未检查构造函数中的令牌。
另一个选项是在身份验证事件处理程序中设置语言环境。我在这里找到了 JWT 包事件列表:
// fired when the token could not be found in the request
Event::listen('tymon.jwt.absent');
// fired when the token has expired
Event::listen('tymon.jwt.expired');
// fired when the token is found to be invalid
Event::listen('tymon.jwt.invalid');
// fired if the user could not be found (shouldn't really happen)
Event::listen('tymon.jwt.user_not_found');
// fired when the token is valid (User is passed along with event)
Event::listen('tymon.jwt.valid');
如果有人可以帮助我为我定义一个处理程序,tymon.jwt.valid我将不胜感激。或者即使您有其他解决方案可以在执行index、store、show和函数update之前运行事件。destroy
慕姐8265434
倚天杖