Что-то не так с моим кодом Comeonin.bcrypt для хеширования паролей - PullRequest
1 голос
/ 04 июля 2019

Поэтому я использую Phoenix последнюю версию и Comeonin 5.0 и bcrypt_elixir 2.0 для хеширования моего пароля, но почему-то он не может использовать мою текущую функцию, которую я использую, и показывает, что она не определена.

Поскольку функция изменилась сейчас, прежде чем я использовал hashpwsalt(pass), чтобы передать свой пароль для создания хэша.Но сейчас я использую hash_pwd_salt(pass).Но это все еще показывает мне ошибку.

defp put_password_hash(changeset) do
    case changeset do
      %Ecto.Changeset{valid?: true, changes: %{password: pass}}
        ->
          put_change(changeset, :password_hash, hash_pwd_salt(pass))
      _ ->
          changeset
    end
  end
end

Это ошибка, которую я получаю, когда пытаюсь запустить свой сервер:

не может импортировать Comeonin.Bcrypt.hash_pwd_salt / 1, потому что он не определен или является личным

Пожалуйста, посмотрите на мой код и скажите, какие изменения я могу сделать?

1 Ответ

0 голосов
/ 04 июля 2019

Проблема в том, что нет функции с одним параметром hash_pwd_salt/1. Там hash_pwd_salt/2, а 2-й параметр не обязателен.

Вот источник для этой функции в v2.0 из Bcrypt:

  def hash_pwd_salt(password, opts \\ []) do
    Base.hash_password(
      password,
      gen_salt(
        Keyword.get(opts, :log_rounds, Application.get_env(:bcrypt_elixir, :log_rounds, 12)),
        Keyword.get(opts, :legacy, false)
      )
    )
end

Обратите внимание, что если вы вместо этого используете псевдоним модуля, вам не требуется арность функции.

Например, поместите alias Comeonin.Bcrypt в верхней части вашего файла, а затем укажите модуль при вызове функции следующим образом: Bcrypt.hash_pwd_salt(pass)

...