每次$app->user->isguest()都要去查询数据表吗? [ 2.0 版本 ]
每个页面有判断是否已经登录,去log查看,都有一句select * from user where id='1'
的语句。
难道这个不是写在session吗?
共 4 个回答
-
可以看看源码是怎么处理的
yii2\web\User.php
第604行protected function renewAuthStatus()
这个方法里面$class = $this->identityClass; $identity = $class::findIdentity($id);
这2行
$class就是我们写的 app\models\User.php
所以,你看看你自己写的这个User类里的findIdentity这个方法,是否查询了数据库
下面是我写的方法,丢到了缓存里,就可以不用查数据库了public static function findIdentity($id) { $userCache = new UserCache(); $userData = $userCache->getUserDataByUid($id); if (empty($userData)) { return null; } else { $arr = []; $arr['id'] = $userData['user_id']; $arr['username'] = $userData['user_name']; $arr['authKey'] = $userData['user_authkey']; return new static($arr); } }
hq22
注册时间:2014-02-12
最后登录:2015-01-31
在线时长:11小时2分
最后登录:2015-01-31
在线时长:11小时2分
- 粉丝0
- 金钱1
- 威望0
- 积分111