Авторизация на нескольких сайтах

Glazzz

Новичок
Ситуация такая:
Есть два сайта на одном сервере, оба сайта используют wordpress, для удобства таблицы для двух сайтах размещаю в одной базе, но с разными префиксами. Пользователи на обоих сайтах идентичные. Надо сделать чтобы при авторизации на одном из сайтов, пользователь авторизировался и на втором. Домены разные, а значит куки не работают... Как можно реализовать данную проблему?
 

hell0w0rd

Продвинутый новичок
А в вордпресе сессии разве не в базе хранятся?
 
  • Like
Реакции: AmdY

Glazzz

Новичок
Может глупый вопрос, но все же... Можно ли посредством php отправить post-запрос на сайт с другим доменом? В нем собираюсь хранить id-сессии
 

Фанат

oncle terrible
Команда форума
отправить-то не проблема
только как ты потом его в сессию клиенту для того домена запишешь?
 

Glazzz

Новичок
Ну а если использовать curl? Я просто митаюсь от варианта к варианту, даже не знаю на чем остановиться
 

WMix

герр M:)ller
Партнер клуба
Glazzz
тогда один сервер получит куку для другого сервера, а нужно чтоб клиент ее получил (и не только получил но и отдавал на правильный хост). те со стороны сервера это так просто врятли получится
вот если клиентом (browser) отдать POST на оба сайта сразу, то получится. к примеру js.
 

Glazzz

Новичок
WMix
А как тогда сохранится кука? Если не сложно, то хотя бы небольшой пример
 

WMix

герр M:)ller
Партнер клуба
браузер это сделает сам. тебе об этом думать не надо (или другими словами в этом и есть твоя проблема, что ты не можешь сказать браузеру какую куку для какого хоста. работает так: с какого хоста придет для того и будет). надо подумать как перехватить событие нажатия на кнопочку login и как отдать 2 http-запроса сразу
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
есть еще простой вариант login через какойнить facebook (ну и геморой с этим связаный). но это уже предлагалось в первом ответе.
 

Glazzz

Новичок
В вордпресс можно использовать хуки. Так, например, при авторизации можно использовать хук wp_authenticate и получить данные входа.
PHP:
add_filter('wp_authenticate', 'callback');
function callback()
{
	print_arr($_POST);
	die;
}
В результате получается массив из
PHP:
Array
(
    [log] => admin
    [pwd] => 111
    [wp-submit] => Log In
    [redirect_to] => http://site.ru/wp-admin/
    [testcookie] => 1
)
Если я правильно понял, то мне нужно здесь вставить js с отправкой этих же данные на другой сайт через post?
 

Glazzz

Новичок
А как собственно отправлять данные на другой домен? Мне бы хотя бы немного наглядного примера.
 

Фанат

oncle terrible
Команда форума
Кстати, богатая тема - кроссдоменная авторизация через CSRF!
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
я бы не советовал играть с CSR, XSS и двойным сабмитом потому что мы недавно наткнулись на проблемы с аналогичным решением

разработчик пошел простым путем: для авторизации на 3х сайтах делалось 3 POST-запроса, а при каждом открытии страниц выполнялось 2 ajax запроса для поддержки сессий на всех сайтах

проблема 1: при выкатке такого решения мгновенно в 3 раза выросло количество запросов к php
проблема 2: браузеры начали показывать для некоторых страниц предупреждение о фишинге

лучше реализовать сервис по принципу паспорта, ничего сложного же
 
  • Like
Реакции: AmdY

Glazzz

Новичок
Нашел инфу что ajax может отправлять кроссдоменные запросы, если я правильно понял... Типа надо прописать crossDomain: true, но что-то не катит. Js и собственно ajax знаю слабо.
 
Сверху