php - Laravel 护照阻止用户使用相同的凭据一起登录
问题描述
我正在使用 Laravel Passport 允许我的手机调用 laravel api 以使用 laravel 身份验证。
我最近发现了一个问题,即 laravel 护照允许同一用户从多个设备登录。我有什么解决方案可以防止同一用户同时使用其他设备登录吗?
我找到了一种使用 Laravel Passport 注销的方法,但我不知道如果我使用它是否是最好的方法
$request->user()->token()->revoke()
每当用户尝试登录时。
解决方案
您可以挂钩AccessTokenCreated
事件,然后在您的侦听器中,您可以撤销任何现有的令牌。
将这些事件/听众添加到您的EventServiceProvider
'Laravel\Passport\Events\AccessTokenCreated' => [
'App\Listeners\RevokeExistingTokens',
],
然后使用创建一个监听器php artisan make:listener RevokeExistingTokens
然后在handle
函数内部:
$user = User::find($event->userId);
$user->tokens()->offset(1)->get()->map(function ($token) {
$token->revoke();
});
这将删除除刚刚创建的用户令牌之外的所有用户令牌。
推荐阅读
- java - 加载图像时 RecyclerView 滞后
- android - Android 将数据从通知传递到活动
- algorithm - 随机算法总是给出近似结果吗?为什么?为什么不?
- google-apps-script - Google 应用脚本 web 应用 getActiveUser.getEmail() 在部署为 USER_DEPLOYING 时不起作用
- java - 如何在 Wildfly 上运行调度程序
- file - 小文件的 GUI 设计
- laravel - Laravel - 防止 POST 方法垃圾邮件
- gulp - GulpJS 4.0.2系列里面的一个系列调用的函数不起作用
- apigee - 如何获取 Apigee 代理的端点列表
- python - 按键获取 pandas 数据帧值