加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – Laravel中的单一会话登录

发布时间:2021-08-28 05:09:04 所属栏目:大数据 来源: https://www.jb51.cc
导读:我正在尝试实施一个用户策略,一次只能有一个用户登录.我正试图在Laravel的Auth驱动程序之上构建它. 我曾想过使用Session驱动程序将会话存储在数据库中,并使每个用户名的密钥保持不变.由于会话固定,这可能是一个糟糕的实现. 实施会是什么样的?我应该编辑Auth

我正在尝试实施一个用户策略,一次只能有一个用户登录.我正试图在Laravel的Auth驱动程序之上构建它.

我曾想过使用Session驱动程序将会话存储在数据库中,并使每个用户名的密钥保持不变.由于会话固定,这可能是一个糟糕的实现.

实施会是什么样的?我应该编辑Auth驱动程序中的哪些方法?公共会话密钥存储在哪里?

解决方法:

我最近这样做了.

我的解决方案是在用户登录时设置会话值.然后我有一个小类检查存储的会话ID是否与登录的当前用户相同.

如果用户从其他位置登录,则DB中的会话ID将更新,并且“旧”用户将被注销.

我没有改变Auth驱动程序或任何东西,只需在用户登录时将其置于顶部.登录成功时会发生以下情况:

$user->last_session = session_id();
$user->save();

要检查会话是否有效,我在下面使用

if(session_id() != Auth::user()->last_session){
   Auth::logout();
   return true;
}

如您所见,我在users表中添加了一个名为last_session的列

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读