xuyuan

xuyuan

这家伙有点懒,还没写个性签名!

  • 财富值5895
  • 威望值20
  • 总积分6895

个人信息

  • 2015-03-29 已签到
    连续签到8天,获得了20个金钱
  • 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,
    中间还会有一些其它的判断,如访问超时,具体细节要去看代码。

  • 2015-03-28 已签到
    连续签到7天,获得了20个金钱
  • 岗位要求与薪资相符吗,

  • 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;
    }
    

    你是怎么确定你登录成功,然后有这两种状态变化的呀,

  • 回复了 的说说
    舰长 论坛模板很像 bootstrap 搞得啊
    一下子就被你看出来了。
  • 1.人家是写个例子,你需要依赖哪个就依赖哪个呀,另外重复引用是不会重复加载的,不要循环依赖就行
    2.可以传参,具体看依赖基类

  • //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;
    }
    
副总裁 等级规则
6895/10000
资料完整度
20/100
用户活跃度
0/100

Ta的关注

16

Ta的粉丝

21

Ta的访客

37