请问 Laravel 怎么做到修改密码后让所有登录状态失效

使用redis存储session,如果做到密码修改后使所有已登录该账号的session失效。
已知使用数据库时可以where user_id来得到token,但是redis或文件缓存情况下如何做到。

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
Shuyi
最佳答案

L 5.6+, 不过修改的时候,你的用户需要是登录的状态 :

    $newPassword = $request->new_password;
    //把User的Password改成$newPassword
    Auth::logoutOtherDevices($newPassword);
5年前 评论
讨论数量: 10

试试把 APP_KEY 改掉?

5年前 评论

@wuwx 讲错了,是修改密码,就是用户修改密码后使当前用户失效

5年前 评论

查找Redis中相关联的用户,清除掉

5年前 评论

修改完密码,清空用户的登陆状态即可,你可以做个事件监听修改密码的动作

5年前 评论

修改完后执行退出登录

5年前 评论
Shuyi

L 5.6+, 不过修改的时候,你的用户需要是登录的状态 :

    $newPassword = $request->new_password;
    //把User的Password改成$newPassword
    Auth::logoutOtherDevices($newPassword);
5年前 评论

你这问题描述的不太清楚,你只说了用laravel修改密码。都不知道你的会话机制用的是什么?session or auth2.0???

5年前 评论
66

就该密码后 把原来token拿出来做登出操作不就好了。。。。

5年前 评论

1其实原因跟session差不多 修改以后删除掉redis登录相关的信息 这个时候基类肯定会判断是否有用户信息 没有就会重新登录
2 如果想实时的话 那就建议加个定时器定时请求如果找不到token就跳转到登录页面

5年前 评论

没一个回答的靠谱的

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!