Найкраще рішення для автентифікації в 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 теж, що виявилось приголомшливим, приклад тут: kupcevote.com/user_session/new
Брайан Армстронг

Приклад проекту дозволяє надзвичайно легко розпочати роботу. Просто git клонуйте сховище, скопіюйте у файл database.yml, і ви готові до повністю автентифікованого сайту.
Кейсі Уотсон,

22

Я справді рекомендую Restful Authentication . Я думаю, що це майже фактично стандарт.


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

10

За справді простим рішенням зверніться до Очищення .

Якщо ви шукаєте більше варіантів, 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
Будь ласка, не думайте, що я страшенно грубий, але я думаю, що запис на форумі є прикладом найгіршої частини автентифікації. Існує безліч відсутніх функцій, і ось надзвичайно довгий (і суперечливий) набір кроків для додавання цих функцій по одному. Якою б не була протилежність СУХОГО, я майже впевнений, що це все. Тільки ви не повторюєте себе, ви повторюєте сотні інших розробників, щоб включити речі, які повинні були бути включені або необов’язкові для RA з самого початку.
Джон Мунш,

3

Мені дуже подобається дозвіл мислителя. Дуже простий, має кілька хороших гачків і перевіряється.


3

Здається, AuthLogic - це те, що ви хочете для цього. Це дуже налаштовується, і хоча воно не генерує код для вас, воно досить просте у використанні. Для перевірки електронної пошти та відновлення пароля ви, мабуть, хочете використовувати :perishable_tokenстовпець. Про це дбає AuthLogic, скидати його потрібно лише тоді, коли він використовується. Щоб отримати інформацію про те, як налаштувати базовий додаток, ви можете подивитися Railscast Райана Бейтса на AuthLogic та "офіційний" приклад програми. Бен Джонсон, творець AuthLogic, також написав допис у блозі про те, як НАДІЙНО скинути паролі.

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

Оновлення: Тепер я можу розміщувати більше посилань, тому я зв’язав ще кілька. Дякуємо вам за час додавання посилання


Посилання на Railscast - railscasts.com/episodes/160-authlogic
мартінат

2

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

  1. Не думайте категоріями "контролю". У Rails модель, View та Controller набагато незалежніші, ніж у ASP.NET у стилі "веб-форм". Обробляйте те, що ви хочете від кожного шару, самостійно, пишіть тести / специфікації, щоб відповідати, і переконайтесь, що кожен шар робить те, що ви очікуєте.
  2. Навіть якщо ви використовуєте плагін, не можна замінити читання (принаймні деяких) згенерованого коду. Якщо у вас є широке уявлення про те, що відбувається під капотом, вам набагато простіше буде налагодити та налаштувати.

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

Цієї інформації має бути достатньо, щоб ви почали знаходити голови та хвости ... удачі.


2

Тільки оновлюю це: Railscast # 250 Райана Бейтса показує побудову системи автентифікації з нуля ....


2
Хоча RailsCast на замовлену систему автентифікації є чудовою (і я вже впроваджував подібну систему вже неодноразово), вона аж ніяк не попередньо побудована і не надає всіх функцій, які робить установка, як Devise.
Колін Р

Погоджено, але Devise може бути досить громіздким. На мій погляд, багато часу та болю в серці можна заощадити, побудувавши власну систему авторизації, якщо ви дійсно повністю не скористаєтесь можливостями, які пропонує Devise.
Адам Йонас,

2
Я шукаю заздалегідь розроблене рішення, яке я можу використовувати у своєму додатку RoR.
Колін Р

0

Ще один голос за Оформлення - можливо, не настільки настроюваний або настільки “in”, як authlogic, але з точки зору простої можливості залишити його на місці та йти, безумовно, варто поглянути на нього.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.