使用Devise建立会员系统,发送验证信和忘记密码信

首先在专案上装上devise

bundle add devise
rails generate devise:install

安装好后用devise 建立 User

rails generate devise User

http://img2.58codes.com/2024/20150938JkGxhVkKW2.png

建立好后输入rails db:migrate ...才怪,已经输入的请用rails db:rollback退回去。
在上面图片可以看到devise帮我们建立了一个migration档案
http://img2.58codes.com/2024/201509380JwDJFaFsv.png

来到Confirmable这里把他解开
http://img2.58codes.com/2024/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,但如果已上线的话建议改回falseconfig.action_mailer.default_url_options = { host: ENV["WEB_PATH"]} #production的绝对网址config.action_mailer.delivery_method = :smtpconfig.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 忘记密码寄信实作


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章