Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 31.01.2013 16:21:46

Ikeaboy
Откуда: Киев
Сообщений: 28

Субдомен в Routes

Добрый день, достаточно долго искал решение на зарубежных ресурсах, но так и не нашел подходящее решение.

В данный момент есть правило:

PHP
Route::any('news/(:any)''site@news');

Которое обрабатывает запрос

mysite.com/news/…

Я хочу что бы запрос имел вид:

news.mysite.com/…

Как мне правильно переписать правило?

Это единственный субдомен.

Заранее спасибо?

Не в сети

#2 31.01.2013 16:27:13

Re: Субдомен в Routes

Стандартными средствами этого не достичь. Я бы сделал так:

  • перекрыл стандартный URL::to_action(), чтобы он вместо обычной ссылки вида /news/2... выдавал ссылку на поддомен news.domain.ru/2... — это нужно только если ты используешь PHPaction('news@read'), а не пишешь ссылки явно (что не рекомендуется)
  • настроил скрытую переадресацию на поддомене либо через proxy в nginx/Apache), либо через PHP-скрипт, вызывающий Laravel на основном домене наподобие решения для мультиязычности

Не в сети

#3 31.01.2013 18:34:17

Ikeaboy
Откуда: Киев
Сообщений: 28

Re: Субдомен в Routes

Понятно, спасибо! Работая над этим решением возник другой вопрос.

Есть два домена xyz.com и abc.xyz.com, по сути, это два разных сайта, все модели, классы, отображения, css, js разные, ничего общего. Логично разбить этот сайт на два приложения. Но есть один момент, сессии (стандартный класс Auth) должны быть общие. Выполнил вход на одном домене, авторизирован на другом.

Возможно ли реализовать общие сессии для двух приложений, в разных папках, с общей системной папкой? Должно быть Laravel шифрует сессии используя ключ, разный для каждого приложения, можно его задать вручную?

Не в сети

#4 31.01.2013 19:00:35

Re: Субдомен в Routes

  1. Возможно ли реализовать общие сессии для двух приложений, в разных папках, с общей системной папкой?

Где-то уже этот вопрос поднимался, наверное на англоязычном форуме. Правильное, ИМХО, решение — не делать общими какие-либо части или тем более использовать одинаковые ключи для разных сайтов, а делать общий вход, как принято в сервисах типа OpenID, ВКонтакте, Google API и т.п.

То есть при входе на одном домене выполняется автоматический вход на всех связанных — например, через скрытый xml<iframe> с URL вида http(s)://other-site.com/login?user=U&password=P — таким образом происходит обычный вход с началом сессии и установкой нужных cookie, но для второго домена. В целом это мало отличается от того, как если бы человек вручную вошёл на втором сайте через форму — благодаря этому нет уязвимостей и не нужно добавлять на второй сайт какие-то особые функции.

На эту тему можно погуглить и найти другие возможные способы реализации, так как они не специфичны для Laravel.

Не в сети

#5 31.01.2013 19:23:41

Ikeaboy
Откуда: Киев
Сообщений: 28

Re: Субдомен в Routes

Proger_XP пишет:

при входе на одном домене выполняется автоматический вход на всех связанных

Отлично! Это, думаю, оптимальное решение для меня. В очередной раз помогли мне, спасибо вам!

Не в сети

#6 22.02.2013 20:56:49

Ikeaboy
Откуда: Киев
Сообщений: 28

Re: Субдомен в Routes

Понятно, спасибо! Работая над этим решением возник другой вопрос.

Есть два домена xyz.com и abc.xyz.com, по сути, это два разных сайта, все модели, классы, отображения, css, js разные, ничего общего. Логично разбить этот сайт на два приложения. Но есть один момент, сессии (стандартный класс Auth) должны быть общие. Выполнил вход на одном домене, авторизирован на другом.

Возможно ли реализовать общие сессии для двух приложений, в разных папках, с общей системной папкой? Должно быть Laravel шифрует сессии используя ключ, разный для каждого приложения, можно его задать вручную?

Тем временем, в настройках сессий (config/session.php), нашел такой параметр:

PHP
/*
|--------------------------------------------------------------------------
| Session Cookie Domain
|--------------------------------------------------------------------------
|
| The domain for which the session cookie is available.
|
*/

'domain' => false,

Он рассчитан на решение вышеописанной потребности.

Не в сети

#7 22.02.2013 21:08:08

Re: Субдомен в Routes

Я не думаю, что это то, что ты хотел — она просто ограничивает установку cookie с ID сессии на определённый домен, но ты по прежнему будешь авторизован только в одном места.

Даже если ты поставишь cookie для домена и поддоменов (как .domain.ru), то всё равно для работы сессий нужен одинаковый ключ на обоих доменах, но насколько я понял у тебя это два разных сайта и делать так было бы проблемой с безопасностью.

Не в сети

#8 22.02.2013 22:55:09

Ikeaboy
Откуда: Киев
Сообщений: 28

Re: Субдомен в Routes

Я просто, случайно, наткнулся на решение моей старой задачи, и решил написать. Вдруг кому-то поможет. Задача уже реализована иным способом, который, кстати, посоветовали вы. Спасибо вам!

Не в сети

Подвал раздела