Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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 Rails在尝试重置或解锁时设计重定向以登录_Ruby On Rails 3_Devise - Fatal编程技术网

Ruby on rails 3 Rails在尝试重置或解锁时设计重定向以登录

Ruby on rails 3 Rails在尝试重置或解锁时设计重定向以登录,ruby-on-rails-3,devise,Ruby On Rails 3,Devise,使用 当用户从密码重置电子邮件或解锁帐户电子邮件(designe:recoverable,:lockable)中点击链接时,他们首先被重定向以登录。我在日志中看到,这是302 我改了 ruby 1.9.3p448 Rails 3.2.13 devise (2.2.3) 因此,重定向方法的顶部添加了以下内容: ~/.rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/

使用

当用户从密码重置电子邮件或解锁帐户电子邮件(designe:recoverable,:lockable)中点击链接时,他们首先被重定向以登录。我在日志中看到,这是302

我改了

ruby 1.9.3p448
Rails 3.2.13
devise (2.2.3)
因此,重定向方法的顶部添加了以下内容:

~/.rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/redirecting.rb
因此,要查看调用重定向_到的位置。在caller()链中,没有来自应用程序的代码调用redirect_to。所以我想知道是否有一些错误或怪癖导致了这种重定向

目前,用户必须返回电子邮件中的链接并再次点击


更新 在.rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/designe-2.2.3/app/controllers/designe/unlocks_controller.rb中

File.open("/home/myname/fooblah.txt", 'a'){|f| f.puts(caller()); f.puts "########"}
。。。那么默认重定向到根路径?但是designe.yml说:

# GET /resource/unlock?unlock_token=abcdef
def show
  self.resource = resource_class.unlock_access_by_token(params[:unlock_token])
  if resource.errors.empty?
    set_flash_message :notice, :unlocked if is_navigational_format?
    respond_with_navigational(resource){ redirect_to after_unlock_path_for(resource) }
  else
    respond_with_navigational(resource.errors, :status => :unprocessable_entity){ render :new }
  end
end

protected
  # The path used after unlocking the resource
  def after_unlock_path_for(resource)
    new_session_path(resource)
  end

这在Devage gem中似乎是不一致的…

我猜您添加了:验证用户!在应用程序控制器中,并已覆盖设备的控制器


如果是这种情况,您必须在过滤器之前添加跳过过滤器:验证用户!要覆盖控制器操作

谢谢,但它没有任何效果=(这对我很有效。在我的
routes.rb
中,我必须覆盖用户的控制器/用我自己的控制器解锁,我只做了以下操作:
class UnlocksController
unlocked: 'Your account was successfully unlocked. You are now signed in.'