【问题标题】:logout a user by another user(admin) in laravel 5.2在laravel 5.2中由另一个用户(管理员)注销用户
【发布时间】:2016-07-23 00:45:27
【问题描述】:

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

我的分析错了吗??

【问题讨论】:

标签: php laravel laravel-5 laravel-5.2


【解决方案1】:

Alexey Mezenin 给出的答案是正确的。人们没有从其他用户的角度看。 Auth 将返回当前用户信息。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    相关资源
    最近更新 更多