【问题标题】:Devise: Create user using only the Email address设计:仅使用电子邮件地址创建用户
【发布时间】:2014-12-26 03:27:06
【问题描述】:

如何使用Devise 创建Signup,而不是用户在注册时同时输入emailpassword,他只需要输入一封电子邮件,然后生成Password通过他的电子邮件?

我试图让注册尽可能简单,我发现既然 devise 已经能够发送激活电子邮件,为什么不直接使用它并发送生成的密码 并在登录时确认?

感谢您的帮助:)

【问题讨论】:

  • 希望link 能帮到你。

标签: ruby-on-rails ruby authentication devise


【解决方案1】:

您可以在控制器中使用 Devise 的友好令牌

password = Devise.friendly_token.first(8)
User.create(email: 'my@email.com', password: password, password_confirmation: password)

friendly_token 是一个字符串,包含 A-Za-z0-9、“- ” 和“_”。

源码here:

def self.friendly_token
  SecureRandom.urlsafe_base64(15).tr('lIO0', 'sxyz')
end

here 了解更多信息:

def self.urlsafe_base64(n=nil, padding=false)
  s = [random_bytes(n)].pack("m*")
  s.delete!("\n")
  s.tr!("+/", "-_")
  s.delete!("=") if !padding
  s
end

【讨论】:

  • 这解决了分配密码的问题,但没有涉及如何将生成的 PW 提供给用户并允许他们重置帐户。事实上,我想知道如果只是注册用户并向他们发送 PW 恢复电子邮件就可以吗?
  • 哦!我正在使用欢迎电子邮件发送生成的密码。
猜你喜欢
  • 2011-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 2011-06-04
  • 1970-01-01
  • 2017-06-21
相关资源
最近更新 更多