Аутентификация Rails с настраиваемыми полями - PullRequest
0 голосов
/ 20 ноября 2010

У меня есть приложение rails, где мне нужно добавить аутентификацию. Проблема в том, что у меня есть устаревшая база данных с пользовательскими полями пользователя и пароля (t_user и t_pass). Плюс, t_pass не зашифрован.

Я ищу что-то вроде http_basic, но у меня могут быть такие методы, как current_user и, возможно, с лучшим пользовательским интерфейсом. Мне не нужна проверка, сброс пароля, ничего. Просто способ аутентифицировать мой путь. Я бы использовал restful_authentication, но я на рельсах 3. Я видел вилку, которая работает с рельсами 3, но мне было интересно, есть ли лучший способ справиться с этой ситуацией?

Ответы [ 3 ]

1 голос
/ 20 ноября 2010

Мне кажется, что вы, вероятно, могли бы делать то, что вам нужно, используя Devise и немного дополнительной игры.В частности, вы захотите:

  • Убедитесь, что вы создали свою таблицу модели пользователя, используя устаревшую таблицу аутентификации.
  • Переопределите valid_password? в этой модели, чтобы проверить ее по t_pass field.
  • Переопределите self.find_for_database_authentication, чтобы найти модель на основе поля t_user.

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

Только предупреждение: Хранить пароли в виде простого текста - очень плохая практика.Если у вас есть какой-либо выбор, я бы серьезно подумал о том, чтобы перенести существующих пользователей в стандартную структуру Devise с зашифрованными паролями.

0 голосов
/ 20 ноября 2010

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

Следующие сведения помогут вам начать работу с Authlogic:

class User < ActiveRecord::Base
  acts_as_authentic do |config|
    config.login_field = :t_user
    config.crypted_password_field = :t_pass
    config.crypto_provider = YourCryptoProvider
  end
  ...
end

Существует информация об основах работы с Authlogic.

Сложная часть этого заключается в том, что вам нужно будет создать собственный класс провайдера шифрования, как описано http://rdoc.info/github/binarylogic/authlogic/master/Authlogic/CryptoProviders, поскольку authlogic не предоставляет метод проверки пароля в виде простого текста.

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

0 голосов
/ 20 ноября 2010

Если вы ищете альтернативные камни для использования, то вы можете попробовать Devise .Вы можете расширить / изменить настройки по умолчанию, чтобы добиться желаемого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...