Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 切换到ssl和Desive令牌无效_Ruby On Rails 3_Ssl_Devise - Fatal编程技术网

Ruby on rails 3 切换到ssl和Desive令牌无效

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_

我们刚刚将rails 3应用程序切换到SSL,后来注意到密码恢复令牌不再在生产环境中工作。当用户试图使用电子邮件链接重置密码时,会显示“无效令牌”

我使用的是rails 3.0.0,Desive 1.3.4,我们的用户模型有:

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}