Rails 3 Аутентификация: Authlogic vs Devise - PullRequest
42 голосов
/ 09 ноября 2010

Я всегда использовал Authlogic в Rails 2.3, но теперь, когда я использую Rails 3, думаю, я мог бы попробовать новое решение для аутентификации.

Как Devise сравнивается с Authlogic?Каковы их различия?

Ответы [ 6 ]

31 голосов
/ 12 декабря 2010

для devise, если вы хотите отправить успешный вход в систему в "welcome / index", который вы добавляете к rout.rb

namespace :user do
    root :to => "welcome#index"
end

как задокументировано https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-in

лично, мне нравится devise,он думает, что это здорово, и я думаю, что вы можете назвать это «самоуверенным», но эти мнения могут быть легко переписаны.

31 голосов
/ 09 ноября 2010

Я использовал их обоих, но не широко. В моем последнем проекте я дал Devise шанс. Вместо этого я использовал Rails-Warden.

Devise - это полная среда аутентификации, построенная на основе Warden. Чтобы настроить его внешний вид, вы используете генераторы, а затем редактируете полученные виды. Его маршруты и логика представления жестко закодированы. Например, успешный вход в систему всегда приведет вас к / session / new? Это был нарушитель соглашения или я, я хотел, чтобы мои пользователи в конечном итоге попали в "welcome / index". Устройство не так хорошо документировано или интуитивно понятно, как авторское.

Warden - это промежуточная платформа, на которой основан Devise. Он имеет плагины для многих схем веб-аутентификации (fb, openid, oauth), и легко создать плагин для вашей собственной аутентификации. Он поставляется без пользовательского интерфейса, и документы не так хороши, как authlogic.

В итоге я использовал rails-warden, потому что мне нужно было подключить несколько пользовательских схем аутентификации.

Также см. Ответ OmniAuth ниже, это то, что я использую в 2012 году.
11 голосов
/ 10 декабря 2010

Я нашел Devise слишком самоуверенным для меня.Если вы просто хотите принять то, как все происходит из коробки, это хорошо и легко начать.У меня были некоторые конкретные требования, и я обнаружил, что пишу что-то, чтобы обойти Devise, поэтому закончил разорвать его и вместо этого обновил Authlogic до Rails3.

10 голосов
/ 13 октября 2011

Как и оригинальный вопросник, я тоже всегда использовал AuthLogic в Rails 2.3 дня, но сделал выбор в пользу Devise, когда AuthLogic не был готов к Rails 3.1 (когда это было на стадии RC). В общем, я заставил Devise делать то, что я хочу, но я несчастен и хотел бы, чтобы я не сделал изменения.

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

Да, есть такие функции, как вставка after_sign_in_path_for / after_sign_up_path_for в работу Application Controller, но эти функции на самом деле предназначены только для возврата пути, и если вы используете Devise, вы обнаружите, что вставляете в них большие блоки кода. Это работает, но иметь собственный пользовательский контроллер для обработки действий, связанных с пользователем, для меня более элегантно.

7 голосов
/ 19 июля 2011

Если вам нужна множественная аутентификация OAuth для Twitter, Facebook, LinkedIn и Google, вы можете использовать гем OmniAuth вместе с Authlogic. Легко понять и дает вам полный контроль над тем, что происходит, когда пользователи проходят аутентификацию на разных социальных сайтах, что вы делаете в authorizations_controller.rb.

3 голосов
/ 29 марта 2012

Мне нравится Devise.Вы также можете использовать OmniAuth с Devise.Я думаю, что проект Devise очень активен и пользуется большой поддержкой в ​​Интернете.

...