创建前确认用户

问题描述 投票:0回答:1

在我的应用程序中,我目前能够创建一个用户 然后开始会话并向电子邮件发送确认电子邮件 地址。虽然这一切都很好,但我希望能做得更多一点 先进。

我想做的是有能力创建用户然后 发送的电子邮件需要用户通过电子邮件进行验证。 一旦他们点击电子邮件中的确认链接,用户就会注册到 数据库,然后就可以登录。我希望此链接转到创建功能。

我该怎么做?

如果需要我当前的代码,我可以提供。

我的控制器中有这个/现在创建:

定义创建 @user = User.new(params[:user])

respond_to do |format|
  if @user.save
    Notifier.user_created(@user).deliver
    session[:user_id] = @user.id
    format.html { redirect_to @user, notice: 'User was successfully created.' }
    format.json { render json: @user, status: :created, location: @user }
  else
    format.html { render action: "new" }
    format.json { render json: @user.errors, status: :unprocessable_entity }
  end
end
end
ruby-on-rails controller authorization mailer
1个回答
4
投票

对于网络运行的无状态方式来说,等待将用户保存到数据库几乎是不可能的事情,但这并不意味着它不能完成。

我建议在用户表中使用一个额外的字段,称为

confirmed
。将其初始化为
false
,然后让确认表单简单地查找用户并将
confirmed
更改为 true。

这将允许您快速判断用户是否已确认自己,并且您可以使用它来做出决定,例如是否允许他们登录。

对于从不确认自己的人,您可以编写一个每 5 天左右运行一次的 rake 任务,然后使用 resque_scheduler 或 cron 作业之类的工具删除所有尚未确认自己的用户。

希望这是您解决方案的开始。

© www.soinside.com 2019 - 2024. All rights reserved.