iT邦幫忙

0

使用Devise建立會員系統,發送驗證信和忘記密碼信

  • 分享至 

  • xImage
  •  

首先在專案上裝上devise

bundle add devise
rails generate devise:install

安裝好後用devise 建立 User

rails generate devise User

https://ithelp.ithome.com.tw/upload/images/20230131/20150938JkGxhVkKW2.png

建立好後輸入rails db:migrate ...才怪,已經輸入的請用rails db:rollback退回去。
在上面圖片可以看到devise幫我們建立了一個migration檔案
https://ithelp.ithome.com.tw/upload/images/20230131/201509380JwDJFaFsv.png

來到Confirmable這裡把他解開
https://ithelp.ithome.com.tw/upload/images/20230131/20150938zDeQEVrvyN.png
現在可以rails db:migrate

來到models/user.rb

在 devise那行最後加上,:confirmable

devise :database_authenticatable, :registerable,:recoverable, :rememberable, :validatable,:confirmable

接下來就是設定信箱

1.development

在/config/environments/development.rb

把false改成true(測試寄信錯誤的時候可以馬上顯示錯誤)

config.action_mailer.raise_delivery_errors = true

然後加上這兩行

config.action_mailer.default_url_options = { host: "http://localhost:3000" }
config.action_mailer.smtp_settings = config_for(:email).symbolize_keys

在 config/ 底下新增 email.yml(記得把它加到 .gitignore )
我自己使用mailgun寄信

development:
  address: "smtp.mailgun.com"
  port: 587
  domain: "mailgun.com"
  authentication: "plain"
  user_name: "你的email帳號"
  password: "你的email密碼"
  enable_starttls_auto: true

2.production
在/config/environments/production.rb

config.action_mailer.raise_delivery_errors = false #測試可改true,但如果已上線的話建議改回false
config.action_mailer.default_url_options = { host: ENV["WEB_PATH"]} #production的絕對網址
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address: "smtp.mailgun.com",
  port: 587,
  domain: "mailgun.com",
  authentication: "plain",
  user_name: ENV["MAILGUN_USERNAME"],
  password: ENV["MAILGUN_PASSWORD"], 
  enable_starttls_auto: true 
}

3.devise

在config/initializers/devise.rb

config.mailer_sender = '<info@example.com>' #改成你想顯示的寄件者

config.mailer = 'Devise::Mailer' #將#字號刪除

到這裡就完成了,在註冊帳號後會收到驗證信,忘記密碼會收到修改信。

小結
做完後我多了好幾個問題
1.User在Email驗證前後的變化,devise在背後做了什麼才會達到驗證效果?
2.confirmation_token做了什麼?
3.修改密碼時reset_password_token是怎麼做到有時效性的?

參考資料:
https://github.com/heartcombo/devise
Devise 忘記密碼寄信實作


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言