如何显示存储在数据库中的所有会话信息(laravel)

fcg9iug3  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(377)

是否仍要显示所有会话数据?
我试过这样

Session::all();

但它返回当前用户信息,而不是所有存储的会话
然后我尝试了这个代码

DB::table('sessions')->get();

它检索所有存储的数据,但所有内容都是这样加密的

[id] => zZLNtqmennbg3gdsfdsffdstlvdZfjKtzZTP7Or6Tk
                    [user_id] => 
                    [ip_address] => 196.144.136.233
                    [user_agent] => Mozilla/5.0 (Linux; Android 7.0; SM-G610F Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.91 Mobile Safari/537.36
                    [payload] => YTozOntzOjY6Il90b2tlbiI7czo0MDoiOVJXSmdkZlFnVktNU3lVVlBQSFdKOElrRFFMVEdtYUJnMENiQzY4NSI7czo5OiJfcHJldmldfdsfdsfdfzOiJ1cmwiO3M6MzM6Imh0dHBzOi8vYXJldmlld3NhcHAuY29tL2Vycm9yXzQwNCI7fXM6NjoiX2ZsYXNoIjthOjI6e3M6Mzoib2xkIjthOjA6e31zOjM6Im5ldyI7YTowOnt9fX0=
                    [last_activity] => 1535513730

另外,由于我使用自定义会话,所以没有用户id
此代码返回正确的数据,但仅针对一个用户

Session::all();

我怎样才能像这样检索所有会话数据?

["plan_type"]=> string(7) "test" ["shop"]=> string(36) "test.test.com"

因为数据库中存储的是加密的,所以我需要用户数据,这样我就知道每个用户有多少个会话

polhcujo

polhcujo1#

只需制作自己的模型并参考同一张表

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class CustomSession extends Model
{
    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'sessions';
}

把它当作其他模型。。。 CustomSession::all(); 至于解密,你可以这样做:https://laracasts.com/discuss/channels/laravel/accessing-the-session-payload-as-a-json-object

$payload = unserialize(base64_decode($session->payload)); // At this point you have an array

当然,你必须在上做它,然后你可以像这样分配它

foreach($sessions as $session){
       $session->payload = unserialize(base64_decode($session->payload));
   }

正如链接中的评论所说:

// If you want an object instead, you could typecast it to a stdObject.
// $payload = (object) unserialize(base64_decode($session->payload));

所以你可以把它当作

$session->payload->someSome;

相关问题