2015-02-12 3 views
0

У меня есть следующая настройка: Laravel5 и AnguarlJS Угловая в интерфейсе отправляет $ http-запросы на сервер Laravel5. Интерфейс находится на test.example.com и бэкэнд на api.example.com Проблема, которую я получил в данный момент, заключается в следующем. Сайт тестируется при запуске, если пользователь имеет открытый сеанс, если у него есть токен внутри него, который соответствует нашей базе данных. Если вы не можете войти в систему с его учетными данными, как обычно. При входе в созданный токен успешно сохраняется в нашей базе данных, а токен должен быть сохранен в элементе сеанса. Когда это будет сделано, он снова будет проверен, если пользователь зарегистрирован правильно, но, по-видимому, сеанс пуст. Мы заметили, что Laravel создает новый сеанс для каждого запроса, который мы делаем от AngularJS. Причина может заключаться в том, что запрос с JS из другого поддомена является запросом кросс-домена, и браузер не отправляет cookie для идентификации с сеансом. Это может быть причиной.Laravel 5 новая сессия по каждому запросу

Видимо, я не знаю, как решить эту проблему.

+0

пытаются установить домен '«домен»=>«.example.com»,' 'в конфигурационном файле/session.php' – Razor

+0

У меня был все время это было не проблема – Sebi55

ответ

1

Я только что сделал следующее сейчас, так как я работал над этим много часов сегодня. Я отредактировал мою конфигурацию nginx, чтобы обслуживать api не на субдомене, но также и в подпапке. Моя конфигурация выглядит следующим образом:

location /api { 
    # First attempt to serve request as file, then 
    # as directory, then fall back to displaying a 404. 
    index index.php; 
    alias /srv/www/htdocs/api/public; 
    if (-f $request_filename) { 
     break; 
    } 

    ## Check for file existing and if there, stop ## 
    if (-d $request_filename) { 
     break; 
    } 

    ## If we get here then there is no file or directory matching request_filename ## 
    rewrite (.*) /api/index.php?$query_string; 

    ## Normal php block for processing ## 
    location ~ \.php$ { 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     fastcgi_index index.php; 
     include fastcgi_params; 
    } 

} 
0

Поскольку веб-сайт без гражданства, просто использование информации заголовка или домена может привести к тому, что человек окажется в средней атаке. Все, что приходит от клиента, может быть изменено или реплицировано, включая данные cookie. У меня нет ответа на вашу конкретную проблему, но я бы порекомендовал другую стратегию.

Одной практикой, используемой при общении с api, является использование токена доступа с защищенными запросами; аналогично отношениям клиент/сервер oauth2. Отправляя токен в запросах XHR или CURL на ваш api, система может лучше проверить, с кем разговаривает. В противном случае вы можете потенциально запускать людей, подменяющих пользователей, прошедших проверку подлинности.

Смежные вопросы