Ruby on rails 3 切换到ssl和Desive令牌无效
我们刚刚将rails 3应用程序切换到SSL,后来注意到密码恢复令牌不再在生产环境中工作。当用户试图使用电子邮件链接重置密码时,会显示“无效令牌” 我使用的是rails 3.0.0,Desive 1.3.4,我们的用户模型有:Ruby on rails 3 切换到ssl和Desive令牌无效,ruby-on-rails-3,ssl,devise,Ruby On Rails 3,Ssl,Devise,我们刚刚将rails 3应用程序切换到SSL,后来注意到密码恢复令牌不再在生产环境中工作。当用户试图使用电子邮件链接重置密码时,会显示“无效令牌” 我使用的是rails 3.0.0,Desive 1.3.4,我们的用户模型有: devise :database_authenticatable, :invitable, :registerable, :recoverable, :rememberable, :trackable, :validatable 我没有使用任何类似ssl_
devise :database_authenticatable, :invitable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
我没有使用任何类似ssl_的要求,因为我们只是在应用程序中普遍使用ssl。我让旧代币过期,以确保它不会以某种方式使旧代币或其他东西过期。我很困惑。这是我们的nginx配置的问题,与designe完全无关。但万一有人发现自己也处于类似的境地,下面是发生的情况。我们设置nginx将普通http URL重定向到https。。具体来说,当有人从domain.com转到www.domain.com时,我们进行了双重重写,第二次将重置代码添加到末尾,以便重置代码以?重置代码=12345?重置代码=12345的形式发送到应用程序 因此,我们更改了nginx配置,以便:
# rewrite ^ https://$server_name$request_uri permanent;
rewrite ^(.*) https://$host$1 permanent;
然后只是一个优化
rewrite ^(.*)$ https://www.domain.com$1 permanent;
现在一切都好了。上面提供的答案是正确的。但这是一个暂时的解决办法,只对Desive有效。但是,当您通过电子邮件手动发送确认令牌时,会出现问题。 您可以永久修复此问题。请转到环境/生产。 换一条线 config.action\u mailer.default\u url\u options={:host=>domainname',:protocol=>http} 到 config.action\u mailer.default\u url\u options={:host=>domainname',:protocol=>https}