Эй, я всегда думал, что это на самом деле довольно распространенная проблема для тех, кто переходит на ruby с php, у которых есть легкие приложения / данные в php, и я удивлен, что их не спрашивают больше.
Я бы соблазнился использовать любой из следующих двух подходов, оба из которых хорошо работали в прошлом. Второй вариант потребует немного больше работы, и оба они потребуют изменения вашего существующего кода входа:
1) Используйте openid для обработки вашего логина, чтобы вам не пришлось беспокоиться о развертывании собственного решения. Либо запустите свой собственный сервер openid, либо используйте Google, Yahoo и т. Д. Запустите каждое из ваших приложений в качестве уникального субдомена. Есть открытые плагины / код для rails и php, и это проверенный и проверенный стандарт безопасности
2) Используйте memcached для хранения сеансов входа в систему (в отличие от БД). Иметь страницу входа (либо в приложении php, либо в приложении rails). Доступ к вашему ruby-приложению или php-приложению будет таким:
a) Пользователь пытается получить доступ к защищенной странице входа в систему
b) Приложение проверяет свои собственные данные сеанса, чтобы увидеть, вошел ли пользователь в систему
c) Если существуют правильные данные сеанса, пользователь входит в систему и приложение продолжает работу
d) Если приложение не может найти текущий сеанс входа, проверяет наличие cookie браузера
e) Затем приложение проверяет memcache для этого ключа cookie.
f) если ключ cookie существует, то пользователь должен войти в систему (в противном случае происходит переадресация на страницу входа)
g) приложение получает user_id из memcached (хранится как ключ cookie), чтобы знать, какой пользователь вошел в систему
h) приложение устанавливает сеанс входа в систему, поэтому ему не нужно снова проходить мимо c, если время сеанса не истекло
Это слишком упрощенная версия того, что происходит, но работает.
Я бы использовал memcached в этом сценарии, потому что он имеет автоматическое истечение значений, которые вы определяете, и чертовски быстро. Помните, не передавайте имена пользователей и пароли между приложениями или даже идентификаторами пользователей. Передайте уникальный ключ, который является просто указателем на информацию, хранящуюся в вашей БД / memcached