AccessTokenGroupEnum::getKeys()] ]; } public function attributeLabels() { return [ 'refresh_token' => '重置令牌', 'group' => '组别', ]; } /** * 验证过期时间 * * @param $attribute * @throws UnauthorizedHttpException */ public function validateTime($attribute) { if (!$this->hasErrors() && Yii::$app->params['user.refreshTokenValidity'] == true) { $token = $this->refresh_token; $timestamp = (int)substr($token, strrpos($token, '_') + 1); $expire = Yii::$app->params['user.refreshTokenExpire']; // 验证有效期 if ($timestamp + $expire <= time()) { throw new UnauthorizedHttpException('您的重置令牌已经过期,请重新登录'); } } if (!$this->getUser()) { throw new UnauthorizedHttpException('找不到用户'); } } /** * @return bool|Member|null|\yii\web\IdentityInterface */ public function getUser() { if ($this->_user == false) { if (!($apiAccount = AccessToken::findIdentityByRefreshToken($this->refresh_token, $this->group))) { return false; } $this->_user = Member::findIdentity($apiAccount->member_id); } return $this->_user; } }