Я ищу готовое решение, которое я могу использовать в своем приложении RoR. В идеале я ищу что-то похожее на аутентификацию ASP.NET Forms, которая обеспечивает проверку электронной почты, элементы управления подпиской и позволяет пользователям сбрасывать свои пароли. Ах да, и легко позволяет мне вытащить пользователя, который в данный момент вошел в приложение.
Я начал изучать уже написанные части, но обнаружил, что это действительно сбивает с толку. Я просмотрел LoginGenerator, RestfulAuthentication, SaltedLoginGenerator, но, похоже, нет ни одного места, где есть отличные учебники или их сравнение. Если есть сайт, который я еще не обнаружил, или если существует фактический стандарт, которым пользуется большинство людей, я был бы признателен за руку помощи.





Я бы очень рекомендовал Успокаивающая аутентификация. Я думаю, что это в значительной степени стандарт де-факто.
Также есть RestfulOpenIDAuthentication, если вам нужна поддержка OpenID в дополнение к поддержке паролей.
Просто примечание, LoginGenerator и SaltedLoginGenerator были заменены Restful Authentication и не поддерживаются в новых выпусках Rails - не тратьте на них время, хотя в то время они были великолепны.
Я также хотел бы отметить отличный руководство / обсуждение по расширению основных функций Restful Authentication, если вы ищете что-то более надежное.
Пожалуйста, не считайте меня ужасно грубым, но я думаю, что эта запись на форуме является примером худшей части Restful Authentication. Есть множество недостающих функций, и вот очень длинный (и противоречивый) набор шагов для добавления этих функций по одной за раз. Какой бы ни была противоположность DRY, я почти уверен, что это так. Только вы не повторяете себя, вы повторяете сотни других разработчиков, чтобы включить то, что должно было быть включено или необязательно для RA с самого начала.
restful_authentication - мощный инструмент, который очень гибок и предоставляет большую часть того, что вы ищете, из коробки. Однако пара предостережений:
Плагин restful_authentication и другие расширяющие его плагины полностью отвечают вашим потребностям. Быстрый поиск на github.com покажет множество руководств, примеров и расширений. Просто зайдите сюда:
- http://github.com/search?q=restful_authentication
Есть несколько проектов, которые используют restful_authentication только для того, чтобы предоставить примеры простого приложения Rails только с частями аутентификации.
Этой информации должно быть достаточно, чтобы вы начали находить орды и решки ... удачи.
AuthLogic, кажется, новый ребенок в блоке и, похоже, следующая эволюция restful_authentication, более простая в использовании и т. д.
http://github.com/binarylogic/authlogic/tree/master
Обновлено: теперь, когда Rails 3 вышел, Devise, кажется, новый, новый ребенок в блоке
https://github.com/plataformatec/devise
или сейчас я использую собственную аутентификацию с has_secure_password, встроенным в Rails http://railscasts.com/episodes/250-authentication-from-scratch-revised
Боковое примечание: Ruby Toolbox - отличный сайт для поиска текущего лучшего решения в различных категориях (в зависимости от количества наблюдателей GitHub):
http://ruby-toolbox.com/categories/rails_authentication.html
Я бы действительно подумал об использовании authlogic. это намного чище, чем restful_auth. Authlogic изучил все предыдущие решения и переработал их в более чистое и настраиваемое решение.
Я последовал твоему совету и выбрал Authlogic, и мне это очень приятно. Настройка может занять немного больше времени, потому что это очень чисто и легко для понимания. Нет пугающих груд сгенерированного кода.
Да, по умолчанию настройка занимает больше времени. Я бы хотел, чтобы он удалил немного абстракции и отправил ее с вещами, которые нужны всем, например, с забытым паролем и подтверждениями по электронной почте. Но в целом все еще неплохо.
Мне также удалось совместить его с OpenID и RPXNow, что получилось потрясающе, пример здесь: buyvote.com/user_session/new
Пример проекта позволяет очень легко приступить к работе. Просто git клонируйте репозиторий, скопируйте в файл database.yml, и у вас будет готов полностью аутентифицированный сайт.
AuthLogic, кажется, то, что вам нужно для этого. Он очень настраиваемый и, хотя он не генерирует для вас код, довольно прост в использовании. Для проверки электронной почты и восстановления пароля вы, вероятно, захотите использовать столбец :perishable_token. AuthLogic позаботится об этом, вам нужно только сбросить его, когда он используется. Для получения информации о том, как настроить базовое приложение, вы можете взглянуть на Railscast на AuthLogic Райана Бейтса и «официальный» пример приложения. Бен Джонсон, создатель AuthLogic, также написал в блоге сообщение о том, как RESTfully сбросить пароли.
К сожалению, я не могу опубликовать более одной ссылки, но ссылки на railscast, сообщение в блоге о сбросе пароля и пример приложения находятся в README (см. Репозиторий AuthLogic для README)
Обновление: теперь я могу публиковать больше ссылок, поэтому я добавил еще несколько. Спасибо marinatime за то, что тем временем добавили ссылку
Ссылка Railscast - railscasts.com/episodes/160-authlogic
Мне очень нравится уровень допуска Thinkbot. Очень простой, имеет несколько хороших ловушек и поддается тестированию.
Еще одно голосование за Clearance - возможно, не такое настраиваемое или не такое, как authlogic, но с точки зрения возможности просто поставить его на место и уйти, на него определенно стоит взглянуть.
Для действительно простого решения используйте Оформление.
Если вы ищете больше вариантов, Придумать - отличное решение. Он использует Warden, который представляет собой систему аутентификации на основе стойки.
Я могу поручиться за Devise. Я установил его в своем приложении и могу сказать, что им легко пользоваться, по крайней мере, для меня как относительного новичка. Я писал о своем опыте работы с ним здесь: therealmattslay.blogspot.com/2010/06/…
Извините ... Вот исправленная ссылка: mattslay.com/devise-authentication-for-rails
Просто обновлю это: Railscast # 250 Райана Бейтса показывает создание системы аутентификации с нуля ....
Хотя RailsCast в индивидуальной системе аутентификации великолепен (и я реализовывал аналогичную систему несколько раз), она ни в коем случае не является предварительно созданной и не предоставляет всех функций, которые есть в системе вроде Devise.
Согласен, но Devise может быть довольно громоздким. На мой взгляд, можно сэкономить много времени и душевных страданий, создав свою собственную систему аутентификации, если вы действительно не собираетесь в полной мере использовать возможности, которые предлагает Devise.
Я бы поддержал это. Недавно мне пришлось реализовать довольно сложную многосайтовую систему аутентификации, которую я основал на дизайне RestfulAuth, предоставляя тот же API для остальной части приложения, что и RA. прочитать код :-)