代码之家  ›  专栏  ›  技术社区  ›  Eduardo

Yii2-在前端应用上处理用户访问令牌

  •  0
  • Eduardo  · 技术社区  · 7 年前

    我已经创建了一个基本的应用程序模板。

    现在我拿到代币后:

    ...code to get token
    
    Yii::$app->session->set('isGuest', false);
    Yii::$app->session->set('user', $response->data->profile);
    

    'rules' => [
                        [
                            'actions' => ['index', 'view', 'delete'],
                            'allow' => true,
                            'roles' => ['@'],
                        ],
                    ],
    

    有没有办法让我觉得我们已经登录并能像往常一样使用所有的方法?

    我想我可以使用Webuser,但不确定正确的方法。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Jørgen    7 年前

    你需要设置用户的身份。

    要成功地做到这一点,您应该创建一个扩展 yii\filters\auth\AuthMethod authenticate($user, $request, $response) {} doc

    我为JWT令牌创建了一个实现,我的authenticate函数将(在验证令牌之后)包含以下行:

    $user_id = $token->getClaim('uid');
    $identity = $user->login(User::findIdentity($user_id));
    
    return $identity;
    

    然后您可以在控制器中执行类似的操作(我的类称为JWTBearerAuth)

    /**
     * @inheritdoc
     */
    public function behaviors()
    {
        $behaviors = parent::behaviors();
        $behaviors['authenticator'] = [
            'class' => JWTBearerAuth::className(),
        ];
        return $behaviors;
    }
    

    推荐文章