Как я могу войти в несколько приложений в разных доменах один раз?
-
25-10-2019 - |
Вопрос
Например, у меня есть 2 приложения, одно в abc.com
, и еще один в xyz.com
.
Теперь я хочу сделать, если один пользователь вошел в систему abc.com
, тогда он также будет вошел в систему xyz.com
автоматически. Означает, что после входа в систему abc.com
, и просто откройте xyz.com
На новой вкладке браузера он будет показан, что он уже вошел в систему.
Это то же самое, что msn.com
а также hotmail.com
, если вы вошли в систему msn.com
, и открыт hotmail.com
, Вы можете видеть, что уже вошли в систему.
я использую CI, и для информации в системе входа в систему я использовал функции сеанса CI (который печенье на самом деле), но кажется, что куки не могут быть разделены по разным доменам.
Я пытался использовать Curl, но Curl не может сделать xyz.com
В самом деле Сделайте печенье.
И я также искал в Google, многие люди предложили передать идентификатор сессии, но проблема в том, что нет никакой связи между abc.com
а также xyz.com
, Как я могу пройти сеанс? Если я сохраняю идентификатор сеанса в базе данных, то как я могу определить, какой пользователь должен использовать этот идентификатор сеанса? По IP не безопасен, очевидно: D
Помогите мне, пожалуйста!
Решение
Вы можете открыть iframe на xyz.com, который будет подключаться к ABC.com, затем использовать Ajax/JS, чтобы перенаправить какой -то токен на xyz.com с iframe, вызывая функцию JS из iframe.
Так что это будет выглядеть как:
Xyz.com:
function authAbcUser(token) {
//During this function you will set a cookie for this user on XYZ.com
}
<iframe height="0" width="0" src="http://www.abc.com/auth.php?token"></iframe>
Abc.com/auth.php:
parent.authAbcUser(token);
Другие советы
Попробуйте использовать это и заставить его работать с CI
http://www.assembla.com/wiki/show/attachpass/single_sign_on_process