michalsn / codeigniter-session-extended
管理存储在数据库中的 CodeIgniter 4 框架的用户会话
v1.0.0
2023-07-23 10:32 UTC
Requires
- php: ^8.0
Requires (Dev)
- codeigniter4/devkit: ^1.0
- codeigniter4/framework: ^4.2
- rector/rector: 0.17.6
This package is auto-updated.
Last update: 2024-09-22 13:55:40 UTC
README
这个库使用户能够查看他们自己的活动会话,并从他们不再使用的设备中删除它们。
它仅与数据库会话处理程序一起工作。
需求
此库要求应用程序遵守 CodeIgniter 4 认证建议。
安装
Composer
composer require michalsn/codeigniter-session-extended
手动安装
在下面的示例中,我们将假设,此项目的文件将位于 app/ThirdParty/session-extended
目录中。
下载此项目,然后通过编辑 app/Config/Autoload.php
文件来启用它,并将 Michalsn\CodeIgniterSessionExtended
命名空间添加到 $psr4
数组中,如下面的示例所示
<?php namespace Config; use CodeIgniter\Config\AutoloadConfig; class Autoload extends AutoloadConfig { // ... public $psr4 = [ APP_NAMESPACE => APPPATH, // For custom app namespace 'Config' => APPPATH . 'Config', 'Michalsn\CodeIgniterSessionExtended' => APPPATH . 'ThirdParty/session-extended/src', ]; // ...
现在,按照 配置会话数据库处理程序 的说明进行操作 - 有一个区别。您必须使用 Michalsn\SessionExtended\DatabaseHandler
类而不是核心类。
<?php namespace Config; use CodeIgniter\Config\BaseConfig; use Michalsn\SessionExtended\DatabaseHandler; class Session extends BaseConfig { // ... public string $driver = DatabaseHandler::class; // ... public string $savePath = 'ci_sessions'; // ... }
最后一步是运行一个命令,该命令将向会话表添加额外字段。要这样做,请运行以下命令
php spark se:install
就这样。你已经准备好开始使用了。
示例
// app/Controllers/Home.php <?php namespace App\Controllers; use CodeIgniter\Exceptions\PageNotFoundException; use Michalsn\CodeIgniterSessionExtended\SessionManager; class Sessions extends BaseController { public function index() { $sm = new SessionManager(); $data['sessions'] = $sm->list(user_id()); return view('sessions/index', $data); } public function delete() { if (! $this->request->is('post')) { throw new PageNotFoundException(); } $rules = [ 'id' => ['required', 'string', 'max_length[128]'], ]; if (! $this->validate($rules)) { return redirect()->back(); } $sm = new SessionManager(); if ($sm->delete($this->request->getPost('id'), user_id())) { return redirect()->back()->with('success', 'Session was successfully deleted.'); } return redirect()->back()->with('error', 'Something went wrong.'); } }