2015-10-21 20:40:11 5026次浏览 1条回答 1 悬赏 50 金钱
  1. 请教一下各位,IdentityInterface里的authkey作用是什么?
  2. 按照权威指南上的做法,我需要在实现IdentityInterface接口的表中添加authkey字段吗?
  3. getauthkey()直接返回表中的id而非权威手册中的随机字符这样可以吗?
  4. 如下代码有什么问题吗?
     public function getAuthKey()
     {
         return $this->id;
     }
     public function validateAuthKey($authKey)
     {
         return $this->authKey === $authKey;
     }
    

最佳答案

  • dingjj2010 发布于 2015-10-28 16:13 举报

    1.按照权威指南解释:yii\web\IdentityInterface::getAuthKey():获取基于 cookie 登录时使用的认证密钥。 认证密钥储存在 cookie 里并且将来会与服务端的版本进行比较以确保 cookie的有效性。具体引用位置在yii\web\user里面loginByCookie方法。
    2.需要在你的用户表里面添加这一个字段。
    3.直接返回id肯定是会出问题的,就比如你validateAuthKey()的时候就会出错,除非你authkey字段存的就是id的值。所以尽量是存的时候就用Yii::$app->security->generateRandomString()获取随机字符。
    4.getAuthKey(),应该返回AuthKey。

    2 条回复
    回复于 2015-10-28 19:40 回复

    关于你的回答的第三个部分,还想问一句,我目前使用的代码就和问题里展示的一样(直接返回id,user表没有authkey字段,validateAuthKey也和问题中展示的一样),但并没有出现什么bug,请问什么原因?

    回复于 2015-10-29 11:06 回复

    估计是你没有用到loginByCookie,其他方式不会调用到这些方法。

    觉得很赞
    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
cristalblock
副总裁

cristalblock

注册时间:2015-05-12
最后登录:2017-06-26
在线时长:24小时24分
  • 粉丝4
  • 金钱8685
  • 威望0
  • 积分8925

热门问题