如何从 Laravel 的特定会话中注销用户?
Posted
技术标签:
【中文标题】如何从 Laravel 的特定会话中注销用户?【英文标题】:How To Logout user from specific session in Laravel? 【发布时间】:2019-11-13 18:36:15 【问题描述】:我正在尝试实现用户登录历史记录并允许用户从特定设备注销
我使用SESSION_DRIVER=database
并在数据库中有sessions
表
根据laravel documentation
我有user_logins
具有以下结构的表:
session_id |user_id | ip_address |用户代理 |浏览器名称 | 位置 |登录名 | is_active
我完全能够使用UserEventSubscriberhandleUserLogin
函数将上述信息存储在表user_logins
中
现在我想从特定设备上注销用户,该怎么做?
我可以使用ip_address
和user_agent
从user_logins
表中删除条目,但我也想从特定设备上注销该用户。
请大家帮我解决这个问题。
【问题讨论】:
【参考方案1】:将此方法放入您的控制器并设置合适的执行路径
public function removeSession($id)
\Session::getHandler()->destroy($id);
return redirect()->back();
【讨论】:
访问这个laravel.com/docs/5.8/session当你在数据库中存储会话时表名应该是sessions
是的,我有 2 个表,sessions
user_logins 用于保存设备登录历史记录【参考方案2】:
public function authLogoutForOccGolf(Request $request)
$request->session()->flush();
return redirect('/');
【讨论】:
这将刷新当前登录用户的所有会话,我想删除登录多个设备的用户的单个会话以上是关于如何从 Laravel 的特定会话中注销用户?的主要内容,如果未能解决你的问题,请参考以下文章