Laravel 注销不同的用户

Posted

技术标签:

【中文标题】Laravel 注销不同的用户【英文标题】:Laravel log different user out 【发布时间】:2015-06-23 02:20:12 【问题描述】:

在我的网站上,管理员有权为用户生成新密码并将新密码通过电子邮件发送给他们。

我怎样才能结束现在拥有新密码的用户的所有会话?

我正在使用 laravel Auth 类。

为了让用户自己注销,我使用Auth::logout();

【问题讨论】:

可以看一下laravel的源码:github.com/laravel/framework/blob/4.2/src/Illuminate/Auth/… 从代码和文档来看,您应该在调用logout() 之前调用Auth::setUser($user) 并传递一个User 实例。但是,我只是尝试过,但它不起作用 - 它会注销 me,而不是我传递给它的用户。也许这是一个错误......无论如何,我提交了一个issue所以你可能想要关注它 这不是错误,@KaloyanDoichinov。 setUser 使您的日志就像您在变量中的 $user 位置一样。如果您想像测试该用户一样进行测试,这很有用。 logout() 方法注销调用该方法的人。所以一切都按原样工作。 【参考方案1】:

对于回访者,如果您使用 Eloquent 并使用他们的指南设置了数据库,那么您的用户表应该有一个 remember_token 字段。删除该字段的内容将阻止它们在下次访问时自动全部登录。

但是,在短期内,Laravel 知道用户是否通过他们的会话 id 登录。我不相信在纯 Laravel 中有解决此问题的方法,但是您可以通过扩展 Auth 类来添加它。然后,您可以强制它检查数据库中您设置的值,以查看是否需要强制退出用户。

我不确定你是如何在 Laravel 中做到这一点的。从理论上讲,Facade 应该使这更容易,但根据我的经验,情况恰恰相反。如果这个问题在我周一上班时仍然悬而未决,我会看看我是否可以为你解决,但我不是 Laravel 的最大粉丝并且拒绝在家里使用它。 ;p

【讨论】:

以上是关于Laravel 注销不同的用户的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 会话数据在注销/登录后仍然存在,即使对于不同的用户也是如此

Laravel 5 - 从他的所有设备中注销用户

Laravel - 注销特定用户

Laravel:注销特定用户

在 Laravel 中通过用户 ID 强制注销特定用户

Laravel 认证用户注销错误