【问题标题】:How to display all session info stored in database (Laravel)如何显示存储在数据库中的所有会话信息(Laravel)
【发布时间】:2021-10-13 22:51:02
【问题描述】:

是否有显示所有会话数据?

我试过这种方式

 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

另外我没有 user_id,因为我使用自定义会话

此代码返回正确的数据,但仅限一个用户

 Session::all();

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

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

因为存储在数据库中的内容是加密的,所以我想要用户数据,所以我知道每个用户有多少会话

【问题讨论】:

  • “自定义会话”是什么意思?
  • 我不使用身份验证登录我使用我的自定义表,所以我不使用用户表,所以没有与会话关联的用户 ID
  • 知道了。而且您需要获取会话的 user_id,对吗?
  • 另外我不太明白你需要得到什么。
  • 我更新了问题

标签: php mysql laravel session laravel-5


【解决方案1】:

只需制作自己的模型并引用同一张表

<?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));
   }

正如链接中的 cmets 所说:

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

那么你就可以把它当作

$session->payload->someSome;

【讨论】:

  • 对不起,这段代码有什么不同吗? DB::table('sessions')->get();我可以从表中获取所有会话,但在加密后我无法使用它们如何从它们那里获取信息
  • 不是真的,没有看到你的那一行,让我用解密部分来补充我的答案
  • 非常感谢,我要找的东西不知道它只是 base64
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-18
  • 2018-12-15
  • 2012-02-04
  • 2018-09-09
  • 1970-01-01
  • 2016-09-23
  • 1970-01-01
相关资源
最近更新 更多