假设三个用户当前从三个设备登录。其中一个用户(管理员)想要强制注销user2,如何在laravel 5.2中实现??
数据库表结构::users -> id|name|email|password|remember_token
更新场景::
user1 --> logged from device 1 [user1 is admin type and has all kind of permission]
user2 --> logged from device 2 [normal user]
user3 --> logged from device 3 [normal user]
当前所有用户都同时登录。user1对user2进行了一些更改,并希望重新登录user2,除了让user1注销外,没有办法告诉user2请重新登录。user1如何让user2(远程用户)注销??
给定解决方案分析:
$userIdToLogout = 2; // it is user2
if (!is_null(Auth::user()) {
if (Auth::user()->id == $userIdToLogout) {
Auth::logout();
}
}
- Auth::user() will return user1 information NOT user2
- So if (Auth::user()->id == $userIdToLogout) condition will never be true
我的分析错了吗??
例如,User1想要注销user2,User1单击href链接将注销user2。单击此链接时,$usersId将包含user2的id。现在,当链接被重定向到路由时,该函数将被调用。Auth指的是当前会话。但是,当user2登录并且他的id属于$usersID时,他的帐户将注销。
if(Auth::check() && if (in_array(Auth()->id(), $usersId)) {
Auth::logout()
}