Единый вход Laravel с поддоменами

Как я могу реализовать единый вход с поддоменами на Laravel-5? У меня есть:

  • api.domain.com
  • портал.домен.com

Я попытался установить параметры домена и драйвера в /config/session:

'driver' => 'cookie'

or

'driver' => 'file'

а также

'domain' => '.domain.com'

or

'domain' => null

Это все равно не работает. Я все равно получаю 401 (Неавторизованный). Почему?

В контроллере (это стандартная аутентификация laravel):

public function __construct()
{
    $this->middleware('auth');
}

person gurkov    schedule 12.02.2015    source источник
comment
Итак, если я изменил промежуточное программное обеспечение аутентификации для api.domain.com с «auth.basic» на «auth» (так же, как и для portal.domain.com), это сработает. Как я могу использовать аутентификацию OnceBasic для api.domain.com и аутентификацию по умолчанию для portal.domain.com? Я хочу отправить ajax-запрос с portal.domain.com на api.domain.com (те же учетные данные и те же приложения laravel)   -  person gurkov    schedule 12.02.2015
comment
Проблема с заголовками, когда ответ AJAX, см. подробности stackoverflow.com/questions/2870371/   -  person gurkov    schedule 12.02.2015


Ответы (1)


Аутентификация субдоменов Laravel 5: единая регистрация через AJAX и Once Basic через простой HTTP.

Если вы хотите иметь единую регистрацию между вашими субдоменами (например, api.domain.com и portal.domain.com) в Laravel, вы должны сделать это:

  1. Для вашего API используйте следующий фильтр (например, в cunstructor контроллера):

    if (!Auth::check()) $this->middleware('auth.basic.once');

  2. Установите сеанс (config/session):

    'domain' => '.domain.com'

  3. В jQuery.ajax используйте следующие параметры:

    crossdomain: true xhrFields: {withCredentials: true}

  4. Заголовки вашего ответа (например, в .htaccess) должны содержать:

    Header set Access-Control-Allow-Origin "http://api.domain.com" Header set Access-Control-Allow-Credentials true

Теперь вы можете сделать AJAX-запрос с portal.domain.com на api.domain.com и простой HTTP-запрос с базовой авторизацией на api.domain.com

person gurkov    schedule 12.02.2015