1.1 session
在Web应用中,session的重要性毋庸置疑。Yii 2中,使用Session类来管理session。
1.1.1 session数据加载
当用户登录以后,Yii 2会调用到web\User->renewAuthStatus(),在这里调用到session->get()函数时,在session->get()函数内部调用了Session->open(),将session数据加载进来。
1.1.2 session存储
Yii 2默认使用php.ini中的配置参数:
session.save_handler = files
;session.save_path = "/tmp"
也就是说默认将session信息保存到文件,如果php.ini中没有设置session.save_path的话,默认存储路径就是“C:\Users\当前用户\AppData\Local\Temp”。
1.1.3 自定义session存储方式
有些系统为了更好的管理session数据,会将其保存到数据库里,则可以通过继承Session类,并进行如下处理:
1、在子类的getUseCustomStorage()返回true,表示使用自定义存储方式;
2、在子类实现如下接口:openSession(),closeSession(), readSession(), writeSession(), destroySession() and gcSession();
这些接口的含义很清楚,一看函数名就知道了。
1.1.4 Session类配置
默认$app->session所指向的Session类实例,是在web\Application.php中的coreComponents()函数配置的:
public function coreComponents() { return array_merge(parent::coreComponents(), [ ‘request‘ => [‘class‘ => ‘yii\web\Request‘], ‘response‘ => [‘class‘ => ‘yii\web\Response‘], ‘session‘ => [‘class‘ => ‘yii\web\Session‘], ‘user‘ => [‘class‘ => ‘yii\web\User‘], ‘errorHandler‘ => [‘class‘ => ‘yii\web\ErrorHandler‘], ]); } |
如果想用自己的Session类,则可在main.php中的components节点下,参考上述代码配置自己的session类。
时间: 2024-09-28 22:55:03