xuyuan
- xuyuan 2015-03-29 已签到连续签到8天,获得了20个金钱
- xuyuan 回答了问题 Yii2 的 find 查询条件问题
del <>1
包含del is null
吧 //isGuest从这获取 public function getIsGuest() { return $this->getIdentity() === null; } //这个方法调用的$this->_identity,即是你上面那个方法设定的 //你上面那个方法也是传得一个参数进去的,它是一个实例于IdentityInterface接口的对像,具体实现自已写 //它里面有各种获取_identity的方法,比如findIdentity(),,, public function getIdentity($autoRenew = true) { if ($this->_identity === false) { if ($this->enableSession && $autoRenew) { $this->renewAuthStatus(); } else { return null; } } return $this->_identity; }
当用户登录成功,要对这个状态保持有两种情况。1.当前进程内,由于登录成功,identity已经记录,直接返回即可,不存在问题;2.另启一个进程,就如你上面说的页面跳转,这个时候如需进行登录判断,服务端是不记得之前登录成功的客户端的,所以需要客户端提交一个标识,一般就是cookie,与session关联的即是session_id,在第1种方式成功之后它便会生成,在yii中如果开启了自动登录,还将生成另一个cookie,默认名为_identity,另启进程登录过程如下:
Yii::$app->user->isGuest public function getIsGuest() public function getIdentity($autoRenew = true)//如果执行这一步,_identity=false时必需要开启session才会继续做下一步的登录处理,
以上步骤,上面贴出的代码都可以看到。所以你没有开启session,又不是重新登录,所以下一步的登录过程就不会执行了,你要先确定好这一步,并最好在浏览器下查看一下页面跳转前后的cookie变化。
接下来的过程就是重新登录$this->renewAuthStatus();
你个方法首先会根据你session_id,查出你session中存放的identity id,然后再根据id,去获取identity,执行的是findIdentity($id);
这个方法是你自定义的,默认会去查表。如果能成功取回并相应条件满足,自然登录成功,
前面还说了有一个cookie,_identity,
这就是另外一个情况,自动登录,当你的浏览器关闭,再访问时,session_id不存在了,上面的查询肯定失败,此时会再
loginByCookie()去查,具体查的过程不说了。如果查找成功,会重新生成session_id,
中间还会有一些其它的判断,如访问超时,具体细节要去看代码。- xuyuan 2015-03-28 已签到连续签到7天,获得了20个金钱
岗位要求与薪资相符吗,
- xuyuan 2015-03-27 已签到连续签到6天,获得了20个金钱
//isGuest从这获取 public function getIsGuest() { return $this->getIdentity() === null; } //这个方法调用的$this->_identity,即是你上面那个方法设定的 //你上面那个方法也是传得一个参数进去的,它是一个实例于IdentityInterface接口的对像,具体实现自已写 //它里面有各种获取_identity的方法,比如findIdentity(),,, public function getIdentity($autoRenew = true) { if ($this->_identity === false) { if ($this->enableSession && $autoRenew) { $this->renewAuthStatus(); } else { return null; } } return $this->_identity; }
@bobysky 你是怎么确定你登录成功,然后有这两种状态变化的呀,
- xuyuan 回答了问题 关于js文件加载问题
1.人家是写个例子,你需要依赖哪个就依赖哪个呀,另外重复引用是不会重复加载的,不要循环依赖就行
2.可以传参,具体看依赖基类 - xuyuan 回答了问题 Yii2.0 的用户登录问题
//isGuest从这获取 public function getIsGuest() { return $this->getIdentity() === null; } //这个方法调用的$this->_identity,即是你上面那个方法设定的 //你上面那个方法也是传得一个参数进去的,它是一个实例于IdentityInterface接口的对像,具体实现自已写 //它里面有各种获取_identity的方法,比如findIdentity(),,, public function getIdentity($autoRenew = true) { if ($this->_identity === false) { if ($this->enableSession && $autoRenew) { $this->renewAuthStatus(); } else { return null; } } return $this->_identity; }