Devise 是一個強大的 gem ,可以輕鬆的完成登入的功能,那要如何加上忘記密碼寄信的功能呢?
Rails 提供了 ActionMailer 元件,來做到 E-mail 功能的整合,會感覺用起來和 Controller 很像 ( 不過devise其實已經幫我們設定好了XD )。
本篇主要重點在實作~
- 在完成以下步驟前需已經先裝好 devise gem
Step 1
在/config/environments/development.rb
false 改 true (做這個更改目的是在測試寄信錯誤的時候可以馬上顯示錯誤)
Step 2
由於這裡需要設定要發送mail的帳號密碼,需要隱藏不公開,故這邊分別用 development 和 production 兩種環境做不同設定來介紹兩種設定方式
- development:
在Step 1下新增下面兩行
在 config/ 底下新增 email.yml (這裡我用gmail設定)
最後記得不要追蹤這個檔案,到 .gitignore 新增 config/email.yml
2. production:
在/config/environments/production.rb
將敏感資料用環境變數 ENV 儲存,記得要在 production 的環境設定這些資料進去,heroku可參考這裡,如果太多要存可以使用 gem 協助,例如 dotenv-rails。
Step 3
到config/initializers/devise.rb
這樣就完成了!
另外建議用 gmail 的話可以申請使用兩步驟驗證後使用應用程式密碼登入,這個方法比較不會被擋。