Как иметь sh вопросов безопасности в рельсах? - PullRequest
2 голосов
/ 12 марта 2020

В моей схеме данных для пользователя у меня есть

  create_table "users", force: :cascade do |t|
    t.string "name"
    t.string "email"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
    t.string "password_digest"
  end

К ха sh паролю, у нас есть t.string "password_digest", но что если я хочу добавить секретный вопрос к пользователям ? Есть ли какая-либо функция по умолчанию для ha sh, ответ на секретный вопрос?

1 Ответ

2 голосов
/ 12 марта 2020

Если ваш код работает сейчас, то, вероятно, в вашей модели есть has_secure_password.

Это, по умолчанию, добавляет к вашей модели аксессор password и хэши значение в столбец с именем password_digest.

Вы можете изменить имя столбца / атрибута, передав имя в качестве первого аргумента в has_secure_password:

class User < ApplicationRecord

  has_secure_password
  has_secure_password(:security_question_1)
  has_secure_password(:security_question_2)

  ...

Это будет автоматически sh user.security_question_1 = "..." для столбца с именем security_question_1_digest.

Имейте в виду:

  • этот метод предназначен для хранения коротких сгенерированных пользователем паролей, используя BCrypt, что означает, что его максимальная длина составляет 72 символа.
  • , этот метод также добавляет в вашу модель валидатор validates_confirmation_of. Вы можете подавить это, передав validations: false.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...