反正有显示所有会话数据吗?
我尝试过
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"
因为存储在数据库中的内容是加密的,所以我需要用户数据,所以我知道每个用户有多少会话
答案 0 :(得分: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));
}
正如链接中的评论所述:
// If you want an object instead, you could typecast it to a stdObject.
// $payload = (object) unserialize(base64_decode($session->payload));
因此,您可以将其用作
$session->payload->someSome;