假设三个设备当前正在记录三个用户。其中一个用户(Admin)想要强制注销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,没有办法告诉user2请重新登录,除非让他通过user1注销。 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
我的分析错了吗?
答案 0 :(得分:0)
Alexey Mezenin给出的答案是正确的。人们没有看其他用户的观点。 Auth将返回当前的用户信息。
例如,User1要注销user2,User1单击href链接将注销user2。单击此链接后,$ usersId将包含user2的ID。现在,将链接重定向到路由时将调用该函数。身份验证是指当前会话。但是,当user2登录后,其ID属于$ usersID时,其帐户将被注销。
if(Auth::check() && if (in_array(Auth()->id(), $usersId)) {
Auth::logout()
}