设计忘记密码不起作用
Posted
技术标签:
【中文标题】设计忘记密码不起作用【英文标题】:devise forgot password not working 【发布时间】:2012-06-09 05:58:43 【问题描述】:我在 Rails 3 上使用设计进行身份验证。登录、注销、注册工作正常,但在忘记密码的情况下没有任何反应。当我单击忘记密码链接时,它会将我带到http://localhost:3000/users/password/new
链接,然后我会收到一个表格,询问我的电子邮件地址和向我发送重置密码说明按钮,但是当我单击该按钮时,它会将我带到http://localhost:3000/users/sign_in
但我不接收有关重置密码的邮件。
在控制台上我可以看到以下内容:
Sent mail to nikitasalunkhe.3@gmail.com (968ms)
Date: Tue, 05 Jun 2012 13:14:22 +0530
From: please-change-me-at-config-initializers-devise@example.com
Reply-To: please-change-me-at-config-initializers-devise@example.com
To: nikitasalunkhe.3@gmail.com
Message-ID: <4fcdb8d6de776_dd624e71f0a78a7@user-G41MT-S2.mail>
Subject: Reset password instructions
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
<p>Hello nikitasalunkhe.3@gmail.com!</p>
<p>Someone has requested a link to change your password, and you can do this through the link below.</p>
<p><a href="http://localhost:3000/users/password/edit?reset_password_token=gUB8L9nWNikjVJpnhbDW">Change my password</a></p>
<p>If you didn't request this, please ignore this email.</p>
<p>Your password won't change until you access the link above and create a new one.</p>
但我的收件箱中没有邮件。
以下是我的 config/initializer/devise.rb 文件的代码:
Devise.setup do |config|
config.mailer_sender = "nikitasalunkhe.3@gmail.com"
config.mailer = "Devise::Mailer"
require 'devise/orm/active_record'
config.case_insensitive_keys = [ :email ]
config.stretches = 10
config.use_salt_as_remember_token = true
config.reset_password_keys = [ :email ]
这是 development.rb 文件代码:
Alumnicell::Application.configure do
# Settings specified here will take precedence over those in config/application.rb
# In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development
# since you don't have to restart the webserver when you make code changes.
config.cache_classes = false
# Log error messages when you accidentally call methods on nil.
config.whiny_nils = true
# Show full error reports and disable caching
config.consider_all_requests_local = true
config.action_view.debug_rjs = true
config.action_controller.perform_caching = false
# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = false
# Print deprecation notices to the Rails logger
config.active_support.deprecation = :log
# Only use best-standards-support built into browsers
config.action_dispatch.best_standards_support = :builtin
config.action_mailer.default_url_options = :host => 'localhost:3000'
end
我应该做哪些更改才能使其正常工作?
【问题讨论】:
是的,我查过了,也没有邮件 我上面的解决方案对你有好处吗?最好的方法是使用邮件服务器。您可以在本地安装一个(非常无聊...)或使用一个。 sry bt 运气不好...m 在设计/密码控制器中出现新错误 NoMethodError#create undefined method `ago' for nil:NilClass 尝试在您的初始化设计中检查/添加 config.reset_password_within = 1.hour。 取消注释现在 NoMethodError 上方的那一行已经消失,但我仍然看不到收件箱中的任何邮件 【参考方案1】:您是否安装了本地邮件程序守护程序?我最好的解决方案是像这样使用 gmail smtp(使用您的设置):
在 config/environments/development.rb 中:
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings =
:address => "smtp.gmail.com",
:port => 587,
:domain => 'mondomaine.com',
:user_name => 'smtp@mondomaine.com',
:password => 'mypassword',
:authentication => 'plain',
:enable_starttls_auto => true
并删除您的行:
config.action_mailer.default_url_options = :host => 'localhost:3000'
在生产模式下,您将拥有一个本地邮件服务器作为后缀。
【讨论】:
我也强烈推荐 sendgrid。也建议将此添加到应用程序 yaml:gist.github.com/mrgenixus/94bb6e945563fc2c745d【参考方案2】:还有另一种解决这个问题的方法是创建一个文件 “config/initializer/setup_mail.rb”
ActionMailer::Base.smtp_settings =
:address => "smtp.gmail.com",
:port => 587,
:domain => "googlemail.com",
:user_name => "ayushcshah@gmail.com",
:password => "secret_password",
:authentication => "plain",
:enable_starttls_auto => true
【讨论】:
【参考方案3】:解决了问题...在我的 development.rb 文件中进行了一些更改,如下所示:
require 'tlsmail'
Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings =
:enable_starttls_auto => true,
:address => "smtp.gmail.com",
:port => 587,
:tls => true,
:domain => 'gmail.com', #you can also use google.com
:authentication => :plain,
:user_name => "nikitasalunkhe.3@gmail.com",
:password => "seceret_password"
【讨论】:
【参考方案4】:config.action_mailer.default_url_options = :host => 'my@gmail.com'
尝试提供您的 gmail 帐户名称,而不是 localhost:3000。
【讨论】:
以上是关于设计忘记密码不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Azure AD B2C 自助服务密码重置链接不起作用 [关闭]