Php Yii2 authKey what';目的是什么?

Php Yii2 authKey what';目的是什么?,php,security,authorization,yii2,Php,Security,Authorization,Yii2,没有authKey,我的用户授权可以正常工作。我不知道该怎么用它。但在文档中使用它会更加安全。 我已经在用户ActiveRecord类中实现了这个方法 public function generateAuthKey() { $this->auth_key = Yii::$app->security->generateRandomString(); } public function validateAuthKey($authKey) { return $thi

没有
authKey
,我的用户授权可以正常工作。我不知道该怎么用它。但在文档中使用它会更加安全。 我已经在用户ActiveRecord类中实现了这个方法

public function generateAuthKey()
{
    $this->auth_key = Yii::$app->security->generateRandomString();
}

public function validateAuthKey($authKey)
{
    return $this->authKey === $authKey;
}
我甚至在用户创建时将其保存到用户表中。但我知道,
validateAuthKey
从未被使用过。我正在使用会话,只有PHPSESSID发送给用户。我必须手动设置
authKey
cookie吗?这有什么好处?为什么我不能仅通过PHPSESSID授权用户。它已存储在会话表中。会话配置:

'session' => [
    'class' => 'yii\web\DbSession',
    'sessionTable' => 'session',
],

已经有答案了

请参阅以下源代码(
vendor\yiisoft\yii2\web\User.php
):


您应该包括一些代码如何回答问题的解释。如果您认为其他问题的答案也在这里,您应该将此问题标记为另一个问题的重复,或者如果没有足够(15)个代表能够标记,则什么也不做。在这里发布愚人的答案是不受欢迎的。很抱歉我发布了愚人行为的答案,我是一个新手,我只是想展示一下yii2是如何与auth_keyIt一起工作的。没关系,这里的每个人都必须了解这个社区是如何工作的。我们仍然在学习。:-)这就是为什么我告诉你,你期待什么。如果您想显示比原始答案更多的内容,您可以在原始问题上发布更好的答案,并且仍然可以关闭复制。
protected function loginByCookie()
    {
        $value = Yii::$app->getRequest()->getCookies()->getValue($this->identityCookie['name']);
        if ($value === null) {
            return;
        }

        $data = json_decode($value, true);
        if (count($data) !== 3 || !isset($data[0], $data[1], $data[2])) {
            return;
        }

        list ($id, $authKey, $duration) = $data;
        /* @var $class IdentityInterface */
        $class = $this->identityClass;
        $identity = $class::findIdentity($id);
        if ($identity === null) {
            return;
        } elseif (!$identity instanceof IdentityInterface) {
            throw new InvalidValueException("$class::findIdentity() must return an object implementing IdentityInterface.");
        }

        if ($identity->validateAuthKey($authKey)) {
            if ($this->beforeLogin($identity, true, $duration)) {
                $this->switchIdentity($identity, $this->autoRenewCookie ? $duration : 0);
                $ip = Yii::$app->getRequest()->getUserIP();
                Yii::info("User '$id' logged in from $ip via cookie.", __METHOD__);
                $this->afterLogin($identity, true, $duration);
            }
        } else {
            Yii::warning("Invalid auth key attempted for user '$id': $authKey", __METHOD__);
        }
    }