首页 文章

在laravel 5.2中由另一个用户(admin)注销用户

提问于
浏览
1

假设有三个用户当前从三个设备登录 . 其中一个用户(Admin)想要强制注销user2,如何在laravel 5.2中实现?

数据库表结构:: users -> id|name|email|password|remember_token

Update 场景::

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

    Alexey Mezenin给出的答案是正确的 . 人们并没有关注其他用户的观点 . Auth将返回当前用户信息 .

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

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

相关问题