yii1tech/session-dummy

提供对 Yii1 应用程序运行时配置的支持

1.0.1 2023-06-14 15:23 UTC

This package is auto-updated.

Last update: 2024-09-14 18:04:26 UTC


README

Yii 1 的模拟会话扩展


此扩展为标准 Yii 会话提供了一个模拟,从而避免了直接操作 PHP 标准会话。

有关许可信息,请检查LICENSE文件。

Latest Stable Version Total Downloads Build Status

安装

安装此扩展的首选方式是通过 composer

运行以下命令:

php composer.phar require --prefer-dist yii1tech/session-dummy

或者将以下内容添加到您的 composer.json 文件的 "require" 部分:

"yii1tech/session-dummy": "*"

用法

此扩展为标准 Yii 会话提供了一个模拟,从而避免了直接操作 PHP 标准会话。它引入了 \yii1tech\session\dummy\DummySession 类,该类实际上不会在任何地方存储会话数据,除了当前进程的内存,并且避免向 HTTP 响应发送任何头信息。

此类在编写单元测试时很有用,因为它避免了向 StdOut 发送头信息和 cookies。

应用程序配置示例

<?php

return [
    'name' => 'Test Application',
    'components' => [
        'session' => [
            'class' => yii1tech\session\dummy\DummySession::class,
        ],
        // ...
    ],
    // ...
];

此扩展在 API 开发中也可能很有用。例如:如果您需要通过 OAuth 令牌验证用户,但在代码中使用 \CWebUser 抽象跟踪用户。在这种情况下,您可以在“飞行”中切换会话组件。例如

<?php

namespace app\web\controllers;

use app\oauth\AuthUserByTokenFilter;
use CController;
use Yii;
use yii1tech\session\dummy\DummySession;

class ApiController extends CController
{
    public function init()
    {
        parent::init();
        
        Yii::app()->setComponent('session', new DummySession(), false); // mock session, so it does not send any Cookies to the API client
    }
    
    public function filters()
    {
        return [
            AuthUserByTokenFilter::class, // use custom identity to authenticate user via OAuth token inside {@see CWebUser}
            'accessControl', // now we can freely use standard "access control" filter and other features
        ];
    }
    
    public function accessRules()
    {
        return [
            // ...
        ];
    }
    
    // ...
}