Yii2如何在findIdentityByAccessToken方法中从数据库中获取用户?

时间:2019-07-04 14:04:18

标签: activerecord yii2

我需要为我的Yii2应用设置JWT身份验证。身份验证本身可以正常工作,令牌已解析,我可以在用户模型中读取其数据。但是问题是我需要将此数据与数据库中的真实用户进行比较。因此,我在扩展ActiveRecord的User模型中有了此方法

public static function findIdentityByAccessToken($token, $type = null) {
    $user = User::findOne(['ID' => 1]);
    die(json_encode($user));
}

这很简单,只是看到它找到了一个用户。它不会,并且始终返回以下内容:

  

{“ id”:null,“ userLogin”:null,“ userPass”:null,“ userNicename”:null,“ userEmail”:null,“ userUrl”:null,“ userRegistered”:null,“ userActivationKey”: null,“ userStatus”:null,“ displayName”:null}

未填充数据。但是,如果我在任何控制器中都这样做,就像这样

class TokenController extends ActiveController
{
    public $modelClass = 'app\models\User';

    public function actionFind(){
        return User::findOne(['ID' => 1]);
    }
}

它很好用,我得到了用正确数据填充的User对象。 是否可以从ActiveController类之外获取用户?

1 个答案:

答案 0 :(得分:0)

好吧,die(json_encode($user));我不知道这行到底出了什么问题 但是它实际上找到并填充了用户,以后我可以通过

访问它
Yii::$app->user->identity

所以我也可以在这里盲目地将其ID和密码与真实密码进行比较