Мне нужно, чтобы после корректной авторизации пользователя, он оставался залогиненым не только до закрытия браузера, но и после. Иными словами, чтобы после закрытия браузера(но по прошествии малого кол-ва времени) при повторном заходе в систему не выскакивал alert с инпутами для логина и пароля.
Код аутентификации в behaviors:
'authenticator' => [
'class' => \yii\filters\auth\HttpBasicAuth::class,
'auth' => function ($username, $password) {
$user = User::find()->where(['username' => $username])->one();
if ($user && Yii::$app->getSecurity()->validatePassword($password, $user->password_hash)) {
if ($user->verification_token) {
return $user;
} else {
$token = Yii::$app->getSecurity()->generateRandomString();
$user->verification_token = $token;
$user->save();
$this->serializer['token'] = $token;
return $user;
}
} else {
return null;
}
},
],
User модель в паке common не изменялась вообще (только implements IdentityInterface прописал).
Это мой строчки в main.php бэка для user компонента:
'user' => [
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
'enableSession' => false,
'identityCookie' => ['name' => '_identity-backend', 'httpOnly' => true],
],
Это мой fetch в js с уже отправленными логином и паролем, но аутентификация почему то понимает их только после ввода инфы в инпуты алерта. То есть сначала их нужно ввести, а уже потом этот фетч будет получать json без алерта (до закрытия браузера, после закрытия по новой все то же самое):
let username = 'admin';
let password = '!QAZ2wsx';
let headers = new Headers();
headers.set('Authorization', 'Basic ' + btoa(username + ":" + password));
fetch('http://back.ru/menu?tree=1', {
credentials: "include",
headers: {
headers
},
})
.then(response => response.json()).then(data => { context.commit('SET_LIST', data) });