Pull to refresh

Comments 16

Какой-то он уж очень навороченный. ИМХО, нифига не KISS. restful_authentication мне больше нравится — простой как 3 рубля.
Не скажите. Authlogic очень гибок, умеет все что нужно. При этом не захламляется модель и не нужно подключать кучу либ. Кстати, в нем есть специальная фича для переезда с restful на него.
наоборот, у authlogic логика лучше инкапсулирована. Код моделей занимает буквально 5 строчек:
class User < ActiveRecord::Base
  acts_as_authentic :transition_from_crypto_provider => [Md5CryptoProvider, VbulletinCryptoProvider]
end

class UserSession < Authlogic::Session::Base
end

плюс обычнейшие rest-контроллеры для юзера и сессии
да, в процессе перенос базы паролей из примитивной схемы md5(password) и из базы vBulletin
UFO just landed and posted this here
а можно "<%" и "%>" не такими желтыми?
UFO just landed and posted this here
Я с рельсами пока на «Вы», пользуясь случаем попрошу Вас пояснить конструкцию
u && u.authenticated?(password)? u: nil
. :)

Еще один вопрос. У меня сейчас возможности скачать плагин и посмотреть нет, а листинг регистрации вы не стали приводить; как хранятся пароли в БД? Какое-то шифрование предусмотрено, или надо доделывать самостоятельно?
u = find_by_login(login.downcase) # need to get the salt
u && u.authenticated?(password)? u: nil
u => Пользователь найден по логину. (если логин не правильный то find_by_login вернет nil и u == nil)
u.authenticated?(password) => проверяется корректность пароля. Метод этот примешивается в модель User где то здесь:
include Authentication
include Authentication::ByPassword
include Authentication::ByCookieToken

А "? :" это тернарный оператор. В случае если логин и пароль правильный возвращаем пользователя с этим логином и паролем, иначе возвращаем nil. (в Ruby return не обязательно ставить, возвращается результат последней операции)
Пароли храняться в виде хеша и salt. Шифруются SHA1 алгоритмом
Одна неприятная особенность все же есть: если юзер не залогинен, то current_user вернет false (немного раньше, помню, вообще был :false). ИМХО плохо, лучше было бы, чтобы метод отдавал nil в таком печальном случае.

ЗЫ причина у такого костыля на самом деле есть, но… удобство превыше всего

ЗЫ2 плагин неплохой, особенно после допиливания по себя ;)
Именно поэтому существует logged_in?
Да, такой метод есть, но… А что, если мы пишем что-то вроде:

@post.can_reply?(current_user)

или

@post = Post.create params[:post].merge(:user => current_user)

Будет грусть. Так что nil вместо чего-либо тут рулит.
Sign up to leave a comment.

Articles