2016-03-24 32 views
0

şifresini sıfırlamaya çalışırken, benim (özel) mailler bu hattı vardır:Raylar + Devise "Parola belirtecini sıfırla geçersiz" - ancak jeton db belirteciyle eşleşiyor ...?

edit_user_password_url(@user, reset_password_token: @user.reset_password_token) 

Ve bu böyle bir bağlantı oluşturur:

http://fixit-rails.dev//users/password/edit.6?reset_password_token=13f76244d39b0dfb9746674058a45559280358b99c1fdc36c6b9af2de2ba6376 

Ve veritabanı içinde kullanıcı reset_password_token aşağıdaki sahiptir:

13f76244d39b0dfb9746674058a45559280358b99c1fdc36c6b9af2de2ba6376 
kullanıcı başarıyla yeni şifre ekranına gidin, ama tıkladığında gönderebilirsiniz

, bir hata mesajıdiyor

Neden belirteci tanımayan?

GÜNCELLEME

Aşağıdaki kod ile belirteci oluşturmak:

def generate_reset_password_token 
    raw, enc = Devise.token_generator.generate(User, :reset_password_token) 
    self.reset_password_token = enc 
    self.reset_password_sent_at = Time.now.utc 
    self.save(validate: false) 
end 
+0

E-posta şablonunuzda @token not @ user.reset_password_token olmalıdır. like: 'edit_user_password_url (@user, reset_password_token: @token)' –

+0

@token yok, nasıl oluşturabilirim? Lütfen özel bir e-postada olduğumu, Devise olanlardan biri olmadığını unutmayın. – Mirror318

+0

Jetonu denetleyiciye koyduğunuz ve mümkünse parola sıfırlama e-postası göndereceğiniz kodu paylaşabilir misiniz? –

cevap

0

çözüm bulundu!

edit_user_password_url(@user, reset_password_token: @user.reset_password_token) 

yerine olmalı:

edit_user_password_url(@user, reset_password_token: @token) 

@token nedir, diye sorabilirsiniz? öyle raw dan: Bu automagicallylar ayarlanır, ancak kendi şeyi yapıyorlar, sen raw kaydetmeniz gerekir ve mailler raw için @token set vasiyetle

def generate_reset_password_token 
    raw, enc = Devise.token_generator.generate(User, :reset_password_token) 
    self.reset_password_token = enc 
    self.reset_password_sent_at = Time.now.utc 
    self.save(validate: false) 
end 

.

İlgili konular