我需要能够生成随机 url 安全字符串,以便我可以在链接中使用这些字符串(例如发送到用户电子邮件的激活链接),那么如何生成它呢?有没有办法只用 Elixir 来做到这一点,或者我必须使用一些库?
您可以做的是生成一个 Base64 编码的字符串以用作确认令牌。然后,此确认令牌将保存到您的数据库并作为参数传递到激活链接。您的激活网址将类似于:
activation_url(MyApp.Endpoint, :confirm, confirm_id: confirm_id)
上面的 url 助手假设你有一个MyApp.ActivationController
and a confirm/2
该控制器中的操作。生成confirm_id
,你可以这样做:
def random_string(length) do
:crypto.strong_rand_bytes(length) |> Base.url_encode64 |> binary_part(0, length)
end
# random_string(64)
In your MyApp.ActivationController.confirm/2
,你可以有这样的代码:
def confirm(conn, %{"confirm_id" => confirm_id}) do
user = Repo.get_by(User, confirm_id: confirm_id)
User.confirm(user)
conn
|> put_flash(:info, "Account confirmed!")
|> redirect(to: "/")
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)