因此,我正在使用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,因为它是未定义的或私有的
请查看我的代码,并告诉我可以做些什么更改?
答案 0 :(得分:0)
问题在于没有单个参数函数hash_pwd_salt/1
。有一个hash_pwd_salt/2
,第二个参数是可选的。
在Bcrypt
的v2.0中,该函数的位置为the source:
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)