0
我正在使用Rails教程3推出我自己的身份驗證系統,它的工作原理,直到我嘗試密碼重置部分。當我提交密碼重置表單時,會創建一個令牌並將其存儲在數據庫中作爲reset_password_token
。Rails教程password_reset路由未找到
<a href="http://localhost:3000/password_resets/$2a$10$UU.bHK5V4o6BFRFPqjtPoOV12aSwq9nvy7OQuxFp.rFjK6lqfJali/edit?email=myemail">Reset password</a>
當我點擊鏈接(或複製/粘貼,因爲它是本地)我得到一個錯誤:
No route matches [GET] "/password_resets/$2a$10$XAh7yOyphGR84n5fSBUZhuM4WpuyVwLayIZgB0QTTF.q3PgKX9Kz6/edit"
然後電子郵件與鏈接到密碼重置形式看起來像這樣發
但耙路線顯示路線確實存在:
edit_password_reset_path GET /password_resets/:id/edit(.:format) password_resets#edit
我的代碼,並在教程中的代碼之間的唯一區別是,我的令牌似乎是更長的時間。它大約60個字符,而Hartl的大約是22.另外,當我在控制檯輸入SecureRandom.urlsafe_base64
時,我得到一個22個字符的標記。我不知道爲什麼它會創造一個更長的一個,但我也不確定它的重要性。
更新
梅勒模板:
To reset your password click the link below:
<%= edit_password_reset_url(@user.reset_password_token, email: @user.email) %>
This link will expire in two hours.
If you did not request your password to be reset, please ignore this email and
your password will stay as it is.
你可以在問題中發佈郵件模板代碼嗎? – Pavan
一個有趣的事情是密碼重置鏈接都不同(特別是重置令牌'ID'參數)。這兩個鏈接都來自同一封電子郵件?在你的控制檯中用戶的'reset_digest'的價值是什麼(我認爲這是Hartl的教程中提到的)? – nayiaw