Лучшее решение для аутентификации в Ruby on Rails

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
84
0
56 195
12
Перейти к ответу Данный вопрос помечен как решенный

Ответы 12

Я бы очень рекомендовал Успокаивающая аутентификация. Я думаю, что это в значительной степени стандарт де-факто.

Я бы поддержал это. Недавно мне пришлось реализовать довольно сложную многосайтовую систему аутентификации, которую я основал на дизайне RestfulAuth, предоставляя тот же API для остальной части приложения, что и RA. прочитать код :-)

Laurie Young 20.09.2008 20:03

Также есть RestfulOpenIDAuthentication, если вам нужна поддержка OpenID в дополнение к поддержке паролей.

Просто примечание, LoginGenerator и SaltedLoginGenerator были заменены Restful Authentication и не поддерживаются в новых выпусках Rails - не тратьте на них время, хотя в то время они были великолепны.

Я также хотел бы отметить отличный руководство / обсуждение по расширению основных функций Restful Authentication, если вы ищете что-то более надежное.

Пожалуйста, не считайте меня ужасно грубым, но я думаю, что эта запись на форуме является примером худшей части Restful Authentication. Есть множество недостающих функций, и вот очень длинный (и противоречивый) набор шагов для добавления этих функций по одной за раз. Какой бы ни была противоположность DRY, я почти уверен, что это так. Только вы не повторяете себя, вы повторяете сотни других разработчиков, чтобы включить то, что должно было быть включено или необязательно для RA с самого начала.

John Munsch 06.12.2009 08:49

restful_authentication - мощный инструмент, который очень гибок и предоставляет большую часть того, что вы ищете, из коробки. Однако пара предостережений:

  1. Не думайте в терминах «контроля». В Rails модель, представление и контроллер гораздо более независимы, чем в ASP.NET «в стиле Webforms». Определите, что вы хотите от каждого слоя независимо, напишите тесты / спецификации для соответствия и убедитесь, что каждый слой делает то, что вы ожидаете.
  2. Даже если вы используете плагин, ничто не заменит чтение (по крайней мере, часть) сгенерированного кода. Если у вас есть общее представление о том, что происходит под капотом, вам будет намного проще отлаживать и настраивать.

Плагин restful_authentication и другие расширяющие его плагины полностью отвечают вашим потребностям. Быстрый поиск на github.com покажет множество руководств, примеров и расширений. Просто зайдите сюда:
- http://github.com/search?q=restful_authentication

Есть несколько проектов, которые используют restful_authentication только для того, чтобы предоставить примеры простого приложения Rails только с частями аутентификации.

  1. http://github.com/fudgestudios/bort - базовое приложение для рельсов с функцией RESTful Authentication.
  2. http://github.com/mrflip/restful_authentication_example - еще один проект с отличным примером использования restful_authentication.
  3. http://github.com/activefx/restful_authentication_tutorial - то же, что и выше, с некоторыми другими связанными плагинами.
  4. http://railscasts.com/episodes/67-restful-authentication - отличный скринкаст, объясняющий restful_authentication

Этой информации должно быть достаточно, чтобы вы начали находить орды и решки ... удачи.

Ответ принят как подходящий

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 изучил все предыдущие решения и переработал их в более чистое и настраиваемое решение.

taelor 18.05.2009 01:57

Я последовал твоему совету и выбрал Authlogic, и мне это очень приятно. Настройка может занять немного больше времени, потому что это очень чисто и легко для понимания. Нет пугающих груд сгенерированного кода.

Guy C 17.07.2009 19:23

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

Brian Armstrong 18.07.2009 01:46

Мне также удалось совместить его с OpenID и RPXNow, что получилось потрясающе, пример здесь: buyvote.com/user_session/new

Brian Armstrong 18.07.2009 01:47

Пример проекта позволяет очень легко приступить к работе. Просто git клонируйте репозиторий, скопируйте в файл database.yml, и у вас будет готов полностью аутентифицированный сайт.

Casey Watson 22.10.2010 09:27

AuthLogic, кажется, то, что вам нужно для этого. Он очень настраиваемый и, хотя он не генерирует для вас код, довольно прост в использовании. Для проверки электронной почты и восстановления пароля вы, вероятно, захотите использовать столбец :perishable_token. AuthLogic позаботится об этом, вам нужно только сбросить его, когда он используется. Для получения информации о том, как настроить базовое приложение, вы можете взглянуть на Railscast на AuthLogic Райана Бейтса и «официальный» пример приложения. Бен Джонсон, создатель AuthLogic, также написал в блоге сообщение о том, как RESTfully сбросить пароли.

К сожалению, я не могу опубликовать более одной ссылки, но ссылки на railscast, сообщение в блоге о сбросе пароля и пример приложения находятся в README (см. Репозиторий AuthLogic для README)

Обновление: теперь я могу публиковать больше ссылок, поэтому я добавил еще несколько. Спасибо marinatime за то, что тем временем добавили ссылку

Ссылка Railscast - railscasts.com/episodes/160-authlogic

martinatime 30.05.2010 20:11

Мне очень нравится уровень допуска Thinkbot. Очень простой, имеет несколько хороших ловушек и поддается тестированию.

Еще одно голосование за Clearance - возможно, не такое настраиваемое или не такое, как authlogic, но с точки зрения возможности просто поставить его на место и уйти, на него определенно стоит взглянуть.

Для действительно простого решения используйте Оформление.

Если вы ищете больше вариантов, Придумать - отличное решение. Он использует Warden, который представляет собой систему аутентификации на основе стойки.

Я могу поручиться за Devise. Я установил его в своем приложении и могу сказать, что им легко пользоваться, по крайней мере, для меня как относительного новичка. Я писал о своем опыте работы с ним здесь: therealmattslay.blogspot.com/2010/06/…

MattSlay 16.06.2010 21:03

Извините ... Вот исправленная ссылка: mattslay.com/devise-authentication-for-rails

MattSlay 09.05.2016 05:20

Просто обновлю это: Railscast # 250 Райана Бейтса показывает создание системы аутентификации с нуля ....

Хотя RailsCast в индивидуальной системе аутентификации великолепен (и я реализовывал аналогичную систему несколько раз), она ни в коем случае не является предварительно созданной и не предоставляет всех функций, которые есть в системе вроде Devise.

Colin R 21.09.2012 00:49

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

Adam Jonas 24.09.2012 21:03
Я ищу готовое решение, которое я могу использовать в своем приложении RoR.
Colin R 24.09.2012 21:34

Другие вопросы по теме