inkognito_23
@inkognito_23
Начинающий разработчик

Совместное использование Yii1 и Yii2?

Здравствуйте!
Есть 2 проекта, основной на yii1, дополнительный (переношу проект поэтапно) на yii2. Права пользователей, общее меню, шаблоны (как временная переходная мера) готовы. Никак не получается связать автологин на 2х поддоменах. Т.е. задача такая - сама страница входа пока что только на основном проекте, но при этом, при переходе по ссылкам на поддомен с yii2 чтобы пользователь был залогинен.
Можете помочь с решением этой проблемы?
  • Вопрос задан
  • 462 просмотра
Решения вопроса 1
piromanlynx
@piromanlynx
Системный администратор в Perfect Solutions
Если имеется два именно поддомена, то:
1. Нужно ставить куку с токеном на *.domain.com
2. в куке с токеном должен быть токен, по которому Ваше новое приложение на yii2 налету авторизует пользователя.

По сути - у авторизации 2 логические точки входа: старая форма входа и кука-токен.
Только не забудьте в токен добавить что нибудь рандомное и подпись, примерно так:
$salt = "какая то секретная строка";
$uid = ваш id юзера;
$ts = time();
$sign = sha1($uid.$ts.$salt);
$token = json_encode([ 'user_id' => $uid,  'ts'=>$ts, 'sign'=>$sign ]);

Валидировать такой токен нужно так:
$salt = "какая то секретная строка"; //та же самая
$token = json_decode($_COOKIE['..'], true);
$uid = $token->user_id;
$signGood = sha1($uid.$token['ts'].$salt);
if ($signGood === $token['sign']) {
  //все окей, авторизуем $uid
} else {
  //какая то странная кука, не авторизуем
}

Еще можно проверить время выдачи куки (ts) чтобы он не превышал каких то реальных границ, но в большинстве проектов это излишне и приведет только к глюкам
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы