Единая регистрация для нескольких поддоменов

1

Мне нужно размещать несколько разных сервисов на разных поддоменах, разделяющих один и тот же домен верхнего уровня, и я хочу централизовать процедуру входа в систему.

Идея заключалась в том, чтобы:

site1.tld.com 
site2.tld.com 
site3.tld.com 
siteX.tld.com 
login.tld.com

И перенаправить пользователей на login.tld.com. Затем, после регистрации, они могут иметь доступ к услугам.

Какой лучший способ в PHP реализовать и обеспечить?

Можно ли не хранить локальные файлы cookie и не открывать сеанс?

добавление более подробной информации

Мне нужно, чтобы пользователь также имел возможность запомнить соединение после закрытия браузера. У меня есть полный доступ к серверу, поэтому я могу настроить php.ini, поскольку я хочу

  • 0
    Вы можете установить cookie для охвата поддоменов
  • 0
    stackoverflow.com/questions/18492576/...
Теги:
login
single-sign-on

1 ответ

1

Если вы не хотите устанавливать локальный файл cookie, вам нужно будет придерживаться сеансов. Наличие сеанса в поддоменах работает с крошечным битом, отличным от одного домена. Поэтому давайте начнем.

Сначала нам нужно предоставить нашему сеансовому файлу новое имя session_name(). Мы должны сделать это, потому что имя сеанса должно быть определено до установки параметров cookie. Это сохранит имя старого сеанса под $old_name и обновит имя вашей сессии до "some_name":

$old_name = session_name("some_name");

Затем мы должны установить параметры cookie сеанса с помощью session_set_cookie_params(). Здесь, где мы говорим нашему серверу, на котором будет работать cookie сессии:

session_set_cookie_params(0, '/', '.tld.com');

Предваряя третий параграф (домен "tld.com") точкой, мы убеждаемся, что cookie сессии будет виден на всех поддоменах. В качестве альтернативы вы также можете использовать:

ini_set('session.cookie_domain', '.tld.com');

Наконец, мы должны начать или возобновить нашу сессию в нашем скрипте с session_start():

session_start();

Итак, чтобы подвести итог, вы должны иметь это поверх каждого сценария, который будет использовать ваши сеансы:

<?php

$old_name = session_name("some_name");
session_set_cookie_params(0, '/', '.tld.com');
//ini_set('session.cookie_domain', '.tld.com'); //Uncomment and comment above line if prefered.
session_start();

В качестве побочного я должен включить, что параметры php.ini не разрешены для большинства хостинг-провайдеров. Этот сценарий предполагает, что у вас есть полный доступ к вашему серверу или, по крайней мере, к поставщику, который хочет изменить эти настройки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню