session的过期时间 [ 2.0 版本 ]
我感觉要么是SESSION过期时间没设置好,或者是SESSION有缓存。
$session = Yii::$app->session;
$session->open();
$session['user'] = [
'id' => $only[0]->id,
'permissions' => $only[0]->permissions,
'phone' => $only[0]->phone,
'password' => $only[0]->password,
'mask' => $only[0]->mask,
'name' => $only[0]->name,
'sex' => $only[0]->sex,
'birthday' => $only[0]->birthday,
];
$this->user = $session['user'];
$session->close();
'session' => [
'timeout' => 2,
],
数字派 补充于 2016-07-04 14:59
我是想用SESSION保存用户的基本信息,就不用每次登陆都核对数据库了,但是因为我自己测试嘛,有时间直接在数据库把用户数据删掉,然后再重新注册,再次登陆的时候以前的session还没过期,就会用原先的信息,验证现在的信息,导致一直登陆失败。
最佳答案
-
dingjj2010 发布于 2016-07-05 09:23 举报
用Yii::$app->user->login($user);自动就会用session保存用户信息,如果用户已经登录,直接用Yii::$app->user->identity就可以取到$user的信息了。 可以用Yii::$app->user->isGuest()判断是否登录。Yii::$app->user->logout()退出登录。
共 6 条回复dingjj2010 回复于 2016-07-13 16:14 回复@数字派 这个和用Yii生成页面没有关系,只是开放一个口,简化你的代码而已。
@dingjj2010 我研究一下,谢谢你
dingjj2010 回复于 2016-07-20 09:20 回复@数字派 首先要配置components,里面的user,class定位到你的user模型,然后user模型要继承IdentityInterface就可以。user表结构,直接在项目就可以找到,也可以自己构建。
其他 6 个回答
-
如果是要保存登录信息,自动登录的话,应该是要用cookie保存的,你用session的话,浏览器关闭了就木有了,就得重新登录了~
如果是要做自动登录,数据库中增加auth_key字段即可,模版中的登录程序就会自动实现记住我自动登录的共 1 条回复a406299736 回复于 2016-07-19 16:43 回复浏览器关闭怎么自动退出啊。。。。。。。。我一直想实现这个。。。。。求代码。。。1272932541@qq.com
-
你既然调用了Yii::$app->session就不用再调用open了
了解原理,你给你写下原理:这里输入代码 $session = Yii::$app->session; //当session没有值 或 过期时间到 则重新付值 if(!isset($session['user']) || $session['user']['expire_time'] < time()){ $data = [ 'title' => 'data' . time(), //数据 'expire_time' => time() + 10, //这里设置10秒过期 ]; $session['user'] = $data; } var_dump($session['user']);
知道这个原理,你就可以封装函数了,比如封装一个设置过期的session函数了
数字派 北京
注册时间:2016-04-19
最后登录:2023-03-07
在线时长:52小时34分
最后登录:2023-03-07
在线时长:52小时34分
- 粉丝10
- 金钱1515
- 威望10
- 积分2135