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


84

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

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

Ответы:


83

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

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

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

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

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

22

Я бы действительно рекомендовал Restful Authentication . Я думаю, что это стандарт де-факто.


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

10

Для действительно простого решения выберите Clearance .

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


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

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


3

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


3

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


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

3

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


3

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

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

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



2

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

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

2

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

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

  1. http://github.com/fudgestudios/bort - базовое приложение для рельсов с: RESTful-аутентификацией.
  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

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


2

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


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

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

2
Я ищу готовое решение, которое я могу использовать в своем приложении RoR.
Colin R,

0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.