IdentityInterface里的authkey的一些问题 [ 2.0 版本 ]
- 请教一下各位,IdentityInterface里的authkey作用是什么?
- 按照权威指南上的做法,我需要在实现IdentityInterface接口的表中添加authkey字段吗?
- getauthkey()直接返回表中的id而非权威手册中的随机字符这样可以吗?
- 如下代码有什么问题吗?
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 条回复cristalblock 回复于 2015-10-28 19:40 回复关于你的回答的第三个部分,还想问一句,我目前使用的代码就和问题里展示的一样(直接返回id,user表没有authkey字段,validateAuthKey也和问题中展示的一样),但并没有出现什么bug,请问什么原因?
dingjj2010 回复于 2015-10-29 11:06 回复@cristalblock 估计是你没有用到loginByCookie,其他方式不会调用到这些方法。
cristalblock 觉得很赞
其他 0 个回答
没有找到数据。
cristalblock
注册时间:2015-05-12
最后登录:2017-06-26
在线时长:24小时24分
最后登录:2017-06-26
在线时长:24小时24分
- 粉丝4
- 金钱8685
- 威望0
- 积分8925