Для yii2 есть штатный механизм токенов - bearer token
В своем проекте я создал BaseController наследуемый от ActiveController и в нем метод
public function behaviors()
{
$arBehaviors = parent::behaviors();
$arBehaviors['authenticator'] = [
'class' => HttpBearerAuth::class,
];
$arBehaviors['contentNegotiator'] = [
'class' => ContentNegotiator::class,
'formats' => [
'application/json' => Response::FORMAT_JSON,
],
];
return $arBehaviors;
}
Во vue отправляется ajax запрос на back с логином/паролем. На back'е примерно такой action
public function actionLogin()
{
$model = new LoginForm();
if ($model->load(Yii::$app->getRequest()->getBodyParams(), '') && $model->login()) {
$oUser = User::findOne(Yii::$app->user->id);
$oUser->generateAuthKey();
$oUser->save();
$userData = $oUser->toArray();
unset($userData['password_hash']);
unset($userData['password_reset_token']);
return ['access_token' => $oUser->getAuthKey(), 'user' => $userData];
}
else {
$model->validate();
return $model;
}
}