Задать вопрос
@arsenaljek

Единая межсайтовая авторизация?

Подскажите, как сделать единую авторизацию для 3х проектов.
3 разных домена. На одном сервере. Таблица users общая.
Поля таблицы users
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
	`email` VARCHAR(256) NOT NULL,
	`password` VARCHAR(128) NOT NULL,
	`active` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '1 - активна, 0 - неактивна',
	`reg_date` DATETIME NOT NULL,
	`last_activity` DATETIME NOT NULL,
	`token_reg` VARCHAR(128) NOT NULL,
	`token_auth` VARCHAR(128) NOT NULL,
	`pass_renewal` VARCHAR(128) NOT NULL,

Авторизируюсь так
$result = mysqli_query($linkMain,$sql);
	$user_bd = mysqli_fetch_array($result);
	if (empty($user_bd['id'])) {
		$error .= "Неверный E-mail/пароль.";
	} elseif (empty($error)) {
		$sqlActivity = "UPDATE `users` SET `last_activity`='$DateTimeLast' WHERE `id`=".$user_bd['id'];
		mysqli_query($linkMain,$sqlActivity);
		$remember_me = (isset($_POST['remember_me'])) ? true : false ;
		if ($remember_me) {
			$token_auth = uniqid().generate_random_str(23);
			$sql = "UPDATE `users` SET `token_auth`='$token_auth' WHERE `id`=".$user_bd['id'];
			mysqli_query($linkMain,$sql);
			setcookie("token_auth", $token_auth, time()+60*60*24*30, '/');
		}
		$_SESSION['user_login'] = $email;
		$_SESSION['user_id'] = $user_bd['id'];
		$_SESSION['active_user'] = $user_bd['active'];
		header("Location: /");
		exit();
	}

Я думал добавить в таблицу еще одно поле и при авторизации менять его например на 1 (по-умолчанию 0), а в случае logout делать UPDATE и присваивать значение 0, но возникли вопросы, как быть, если сессия закончиться по истечении времени..Много белых пятен, не понимаю, как грамотно это реализуется
  • Вопрос задан
  • 105 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
myks92
@myks92 Куратор тега PHP
Нашёл решение — пометь вопрос ответом!
Обычно используются общие сессии и куки, но чаще делают с помощью токена.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
MichaelAniskin
@MichaelAniskin
Немного в себе
setcookie ($name_cook,$value,"www.domain1.com","www.domain2.com",...);
И при переходе на другой сайт спрашиваете куку и по ней авторизовываетесь
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы