![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
KPEHDEL |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 31.3.2010 Репутация: нет Всего: нет |
Здравстуйте.
Задача: Пользователь авторизуется на одном сайте. Затем пользователь нажимает на ссылку в меню, должно произойти перенаправление передаться одно значение(логин) и авторизация в другом месте. 1. Это разные сервера, сессии не подойдут. 2. Желателен запрос POST. 3. Адрес в браузерной строке должен меняться, чтобы пользователь мог далее перемещаться по сайту в авторизованном состоянии. Случай: Есть сайт, есть форум. Требуется, чтобы авторизация была единой для пользователя. т.е. с сайта переходит на форум и видит, что он там авторизован. Первый сайт никак не взаимодействует с БД второго и второй соответственно. Требуется передавать только логин пользователя. GET не подходит, по причинам открытости. Делал POST с перенаправлением, с помощью curl, но тогда ссылка в браузере не меняется. Подскажите пожалуйста, как решить данную задачу, примеры приветствуются. С нетерпением жду ответа. Заранее спасибо. |
|||
|
||||
Gromdron |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 4.9.2006 Репутация: 1 Всего: 1 |
Если совсем разные, к примеру forum.ru и site.ru то не вижу путей.
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Проблема в том, что сессии держаться на куках. А для совсем разных доменов куки не пересекаются. Как минимум это должны быть поддомены того домена, который ставил куки.
Другая проблема в том, что ajax-запрос куки не ставит, даже если те были для этого отправлены сервером в ответ. И еще одна проблема в том, что нельзя поставить куки чужому домену. Таким образом нельзя "просто авторизировать пользователя на другом сайте". По сути, авторизация в любом случае сопровождается согласием на это пользователя - установкой кук. Как минимум он должен собственноручно нажать кнопочку на том же домене, на котором авторизируется, чтобы был соответствующий запрос с куками в ответе. а вот с доменами вида example.com и forum.example.com все намного проще - достаточно на первом поставить для кук домен вида ".example.com" и куки (в том числе кука с ID сессии) будут доступны и на forum.example.com. Это сообщение отредактировал(а) Arantir - 31.7.2013, 00:58 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Рекомендую посмотреть как работает авторизация по фейсбук или вконтакте логинам на других сайтах. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 4 Всего: 41 |
Надо добавлять разовый код идентификации.
При авторизации на сайте А генеририруется код идентификации authorization_key. Сохранили user=>authorization_key. authorization_key добавляется к ссылке на сайт Б (или в <input type="hidden">) Сайт Б, если получает authorization_key для неавторизованного пользователя, делает запроса на А, который в свою очередь подтверждает соответствие user и authorization_key. В ответ на подтверждение, Б авторизует пользователя и аннулирует authorization_key. Добавлено через 5 минут и 26 секунд p.s.
Если так, то пользователь должен зарегистрироваться на обоих сайтах под одним логином/мылом. Это сообщение отредактировал(а) Чучмек - 31.7.2013, 13:10 -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
KPEHDEL |
|
||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 31.3.2010 Репутация: нет Всего: нет |
Благодарю всех за ответы. Буду думать.
Подобный алгоритм с аннулированием предполагает, что key, всегда будет разным для одно пользователя, т. к. если он всегда будет одинаковым, то в аннулировании нет смысла. Любой человек, у которого будет ссылка с этим key, сможет авторизоваться. Можно конечно создать таблицу на сервере A. В которой будет храниться сгенерированный hesh/key и соответствующее ему случайным словом, которое делает его уникальным. На сайте B при приходе запроса с ключём, находить в таблице по ключу, брать случайное слово, добавлять к остальным данным и сверять. После успешной авторизации удалять поле. Это вроде похоже на вариант, но тогда надо отбросить пункт:
Возможно так и стоит сделать.
Одних кук будет мало, если поддомен на другом сервере. Хотя можно с куками сделать примерно также, как с описанным вариантом выше. Это сообщение отредактировал(а) KPEHDEL - 31.7.2013, 15:10 |
||||||||
|
|||||||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |