lithemod/session

管理用户会话,允许您在请求之间存储和检索持久和临时信息,例如登录数据、首选项和短期数据。

v1.0.1 2024-10-03 01:00 UTC

This package is auto-updated.

Last update: 2024-10-03 01:00:47 UTC


README

Lithe的会话中间件负责管理用户会话,允许您在请求之间存储和检索持久信息,例如登录数据和首选项。

1. 安装会话中间件

要在Lithe中使用会话中间件,您需要通过Composer安装它。Composer是PHP的依赖管理工具。

步骤

  1. 打开终端(命令行).

  2. 导航到您的项目目录。使用cd命令将目录更改为您的Lithe项目所在的目录。例如

    cd /path/to/your/project
  3. 运行安装命令:

    composer require lithemod/session

此命令将下载并安装会话中间件及其依赖项。

2. 配置会话中间件

安装中间件后,您需要在Lithe应用程序中配置它。这通过使用use()方法来完成。

示例配置

use function Lithe\Middleware\Session\session;

// Add the middleware to the application
$app->use(session());

配置参数

您可以使用一些重要参数配置会话中间件

  • lifetime:以秒为单位设置会话持续时间。默认为2592000(30天)。
  • domain:设置会话cookie有效的域名。
  • secure:指示会话cookie是否只能通过安全连接(HTTPS)发送。
  • httponly:如果它只能通过HTTP请求访问。
  • samesite:定义会话cookie的SameSite属性。可以是'Lax''Strict''None'
  • path:定义会话文件将存储的路径。

带参数的示例配置

$app->use(session([
    'lifetime' => 3600, // 1 hour
    'domain' => 'example.com',
    'secure' => true, // Only over HTTPS
    'httponly' => true, // Accessible only via HTTP
    'samesite' => 'Strict', // SameSite policy
    'path' => 'storage/framework/session', // Path to store sessions
]));

3. 使用会话变量

配置后,您可以通过Request对象访问和操作会话变量。让我们看看如何通过路由来实现这一点。

路由示例

以下是一些如何在Lithe路由中使用会话变量的示例。

设置会话变量

$app->get('/set-user', function ($req, $res) {
    $req->session->put('user', 'John Doe'); // Set the session variable
    return $res->send('User set in the session!');
});

检索会话变量

$app->get('/get-user', function ($req, $res) {
    $user = $req->session->get('user', 'User not found'); // Retrieve the session variable
    return $res->send('User: ' . $user);
});

删除会话变量

$app->get('/remove-user', function ($req, $res) {
    $req->session->forget('user'); // Remove the session variable
    return $res->send('User removed from the session!');
});

销毁所有会话变量

$app->get('/destroy-session', function ($req, $res) {
    $req->session->destroy(); // Destroy all session variables
    return $res->send('All session variables have been destroyed!');
});

检查会话是否活动

$app->get('/check-session', function ($req, $res) {
    $isActive = $req->session->isActive(); // Check if the session is active
    return $res->send('Session active: ' . ($isActive ? 'Yes' : 'No'));
});

重新生成会话ID

$app->get('/regenerate-session', function ($req, $res) {
    $req->session->regenerate(); // Regenerate the session ID
    return $res->send('Session ID regenerated!');
});

获取会话ID

$app->get('/session-id', function ($req, $res) {
    $sessionId = $req->session->getId(); // Get the session ID
    return $res->send('Session ID: ' . $sessionId);
});

设置新的会话ID

$app->get('/set-session-id', function ($req, $res) {
    $req->session->setId('newSessionId'); // Set a new ID for the session
    return $res->send('New session ID set!');
});

获取所有会话变量

$app->get('/all-session-data', function ($req, $res) {
    $allSessionData = $req->session->all(); // Get all session variables
    return $res->send('Session data: ' . json_encode($allSessionData));
});

检查会话变量是否存在

$app->get('/has-user', function ($req, $res) {
    $hasUser = $req->session->has('user'); // Check if the session variable 'user' exists
    return $res->send('User in session: ' . ($hasUser ? 'Yes' : 'No'));
});

4. 魔法方法

会话对象还提供了一些方便的魔法方法

  • __get($key):检索会话变量的值。

    $user = $req->session->user; // Equivalent to $req->session->get('user');
  • __set($key, $value):设置会话变量的值。

    $req->session->user = 'Jane Doe'; // Equivalent to $req->session->put('user', 'Jane Doe');

最终考虑

  • 创建会话目录:中间件确保存储会话的目录存在。如果不存在,它将自动创建。
  • 错误处理:如果在会话配置或初始化过程中发生任何错误,中间件将记录它们并正常继续执行。