在laravel 5.2中,由另一个用户(管理员)注销用户


logout a user by another user(admin) in laravel 5.2

假设三个用户当前从三个设备登录。其中一个用户(管理员)想要强制注销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

我的分析错了吗??

阿列克谢·梅泽宁给出的答案是正确的。人们没有从另一个用户的角度来看待问题。Auth将返回当前用户信息。

例如,User1想要注销user2,User1单击href链接将注销user2。单击此链接时,$usersId将包含user2的id。现在,当链接被重定向到路由时,该函数将被调用。Auth指的是当前会话。但是,当user2登录并且他的id属于$usersID时,他的帐户将注销。

if(Auth::check() && if (in_array(Auth()->id(), $usersId)) {
  Auth::logout()
}