2013-06-04 65 views
2

嗨我试图使用bcrypt在rails中忘记密码。我已经采用了bcrypt文档中描述的方法“forgot_password”,并为它制作了一个邮件程序。 我已经在我的用户模型中设置了此方法,比如self.forgot_passwordRails bcrypt丢失密码

我试图在会话/新登录表单中调用此方法,但我认为我没有很好的方法去做吧。 这里是我的表单代码:

<%= form_for :user, :url=>{:action=>"forgot_password"} do |f| %> 
    <p>Réintialiser mon mot de passe en renseignant votre email ci-dessous :</p> 
    <div class="field"> 
     <%= f.text_field :email, :placeholder=>"ex: [email protected]" %> 
      </div> 
      <div class="actions"> 
      <%= f.submit "Me renvoyer un email", :class => 'btn btn-warning' %></center> 
      </div> 
      <% end %> 

回答

1

为它们分配一个随机,并邮寄给他们,要求他们改变它

def forgot_password 
@user = User.find_by_email(params[:email]) 
    random_password = Array.new(10).map { (65 + rand(58)).chr }.join 
    @user.password = random_password 
    @user.save! 
    Mailer.create_and_deliver_password_change(@user, random_password) 
end 

检查了这一点:https://github.com/codahale/bcrypt-ruby