Я пытался исследовать реализацию JWT в своем приложении и немного запутался.В настоящее время я использую BCrypt для хэша и соли.Мой файл выглядит следующим образом в модели User
class User < ApplicationRecord
has_secure_password
validates :username, :email, :password_digest, presence: true
validates :password, length: { minimum: 6, allow_nil: true }
attr_reader :password
after_initialize :ensure_session_token
def self.find_by_credentials(email, password)
user = User.find_by(email: email)
user && user.is_password?(password) ? user : nil
end
def self.generate_session_token
SecureRandom.urlsafe_base64
end
def password=(password)
@password = password
self.password_digest = BCrypt::Password.create(password)
end
def is_password?(password)
BCrypt::Password.new(self.password_digest).is_password?(password)
end
def reset_session_token!
self.session_token = User.generate_session_token
self.save!
self.session_token
end
def ensure_session_token
self.session_token ||= User.generate_session_token
end
end
Я пытаюсь спросить, нужно ли мне создавать новый метод для дальнейшего шифрования вывода пароля при использовании BCrypt?Как я не могу найти ни одной статьи, где пользователь шифрует пароль пользователя с помощью BCrypt, а затем использует JWT.Все, что я вижу, - это люди, которые упоминают о добавлении BCrypt, добавляя has_secure_password в пользовательскую модель и вместо этого создавая методы хеширования с помощью JWT.
Мой вопрос - заменить BCrypt на JWT или какие рекомендации по защите пароля пользователя с помощью JWT и BCrypt?Кроме того, любые статьи для начинающих будет приветствоваться.
Спасибо за вашу помощь и объяснения.