yii1tech / session-dummy
提供对 Yii1 应用程序运行时配置的支持
1.0.1
2023-06-14 15:23 UTC
Requires
- php: >=7.1
- yiisoft/yii: ~1.1.0
Requires (Dev)
- phpunit/phpunit: ^6.0 || ^7.0 || ^8.0 || ^9.3 || ^10.0.7
This package is auto-updated.
Last update: 2024-09-14 18:04:26 UTC
README
Yii 1 的模拟会话扩展
此扩展为标准 Yii 会话提供了一个模拟,从而避免了直接操作 PHP 标准会话。
有关许可信息,请检查LICENSE文件。
安装
安装此扩展的首选方式是通过 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 [ // ... ]; } // ... }