Laravel 会话表列“有效负载”包含什么,我如何访问这些数据?

zer*_*nes 4 php session laravel

我从本地的 session 表中获取了唯一的值,我是唯一的登录用户。

$data = DB::table('sessions')->get();
Run Code Online (Sandbox Code Playgroud)

如果我返回 base64_decoded 有效负载:

    return  base64_decode($data[0]->payload);
Run Code Online (Sandbox Code Playgroud)

我得到了看起来像加密的 json 的东西。

a:5:{s:6:"_token";s:40:"IlIvr7p3qxeMRg0NxSaITHvIZ1c2HGCh5QSj8wIG";s:9:"_previous";a:1:{s:3:"url";s:28:"http://mytestsite.dev/index.php";}s:5:"flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}s:8:"class_id";s:2:"14";s:9:"_sf2_meta";a:3:{s:1:"u";i:1453341204;s:1:"c";i:1453331047;s:1:"l";s:1:"0";}}
Run Code Online (Sandbox Code Playgroud)

是否有一种安全的方法来解密此 JSON 以使用 Laravel 方法检索用户 ID?

进一步调查可能是会话表不包含用户信息,它只是用来匹配浏览器cookie?

如果是这种情况,我的最终问题是如何合理地确定哪些用户当前登录,而无需在每次加载页面时不断在用户记录上创建更新/插入,如下所示:有人可以解释会话表 laravel

_________________________更新

好的,从我的进一步研究中,我发现浏览器中的 cookie 是会话记录的加密 ID。

        return Crypt::decrypt($cookie);
Run Code Online (Sandbox Code Playgroud)

这留下了最后一个问题,有效载荷列包含什么?

小智 5

在您拥有有效负载后使用它,它将向您显示 json 对象。

print_r(unserialize(base64_decode($datas->payload))); 
dd(unserialize(base64_decode($datas->payload)));
Run Code Online (Sandbox Code Playgroud)