Api Yii2-在前端应用程序上处理用户访问令牌
我在一个项目中工作,如果用户访问信息正确,API(非OAuth)将返回令牌和过期日期 我有一个使用基本模板应用程序创建的应用程序 现在,在我拿到代币后,我会:Api Yii2-在前端应用程序上处理用户访问令牌,api,yii2,yii2-basic-app,yii2-authclient,Api,Yii2,Yii2 Basic App,Yii2 Authclient,我在一个项目中工作,如果用户访问信息正确,API(非OAuth)将返回令牌和过期日期 我有一个使用基本模板应用程序创建的应用程序 现在,在我拿到代币后,我会: ...code to get token Yii::$app->session->set('isGuest', false); Yii::$app->session->set('user', $response->data->profile); 通过这些信息,我可以检查用户是否已登录,并允许其访问站
...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,但不确定正确的方法。您需要设置用户的身份 要成功完成此操作,您应该创建一个扩展了
yii\filters\auth\AuthMethod
的类,该类具有一个公共函数authenticate($user,$request,$response){}
()
我为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;
}
你所有的授权码都能用