在laravel 5.2

时间:2016-04-03 14:00:06

标签: php laravel laravel-5 laravel-5.2

假设三个设备当前正在记录三个用户。其中一个用户(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
  

我的分析错了吗?

1 个答案:

答案 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()
}