Установка пароля для пользователя автоматически — без разработки

#ruby-on-rails

#ruby-on-rails

Вопрос:

Я новичок в Rails 5, я был бы признателен за вашу помощь.

У меня есть модель пользователя, где, очевидно, сохраните пароль для пользователя для возможного входа в систему.

Дело в том, что я хочу автоматически установить пароль на основе текстового поля с именем identification_number .

Все, что я читал, касается этого с помощью Devise gem, но я его не использую, а также не хочу.

Еще раз спасибо за вашу помощь.

Комментарии:

1. Есть очень веская причина, по которой все, что вы прочитали, касается использования devise. «Я новичок в Rails 5» Это дополнительно подкрепляет его. Вы подвергаете своих пользователей огромному риску.

2. Взгляните на github.com/codahale/bcrypt-ruby

Ответ №1:

Поле пароля — это просто еще одно строковое поле, вызываемое :identification_number для вашего случая.

Но сохранение пароля в БД в виде простых строк крайне не рекомендуется.

Существует много проблем с безопасностью, если вы сохраняете пароли в виде простых строк в своей базе данных.

Некоторые из них заключаются в том, что:

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

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

С помощью быстрого поиска в Google я нашел несколько соответствующих сообщений в блогах, которые могут помочь вам создать шифрование пароля с нуля, например:

Без использования драгоценного камня: https://www.sitepoint.com/rails-userpassword-authentication-from-scratch-part-i /

Использование некоторых драгоценных камней: http://railscasts.com/episodes/250-authentication-from-scratch?view=asciicast

Кроме того, пароль не является identification_number . Я бы не стал использовать это имя. Пароль не используется для идентификации пользователя. В id большинстве случаев это идентификационный номер. Лучше просто вызвать его :password . Кроме того, это не обязательно должно быть текстовое поле, оно не должно быть таким длинным.

Комментарии:

1. Я использую bcrypt, но чего я действительно хочу, так это пропустить текстовое поле для пароля и хочу установить его равным текстовому полю identification_number .

2. Извините, я не совсем понял, что вы пытаетесь сделать.

Ответ №2:

Вы можете использовать драгоценный камень bcrypt для реализации безопасного пароля.

Рубиновый камень bcrypt предоставляет вам метод has_secure_password. Метод has_secure_password шифрует пароли путем хэширования и соления паролей и генерирует ‘password_digest’.

вы можете обратиться к этой ссылке для получения дополнительной информации