Rails设计了重定向,以便在尝试重置或解锁时登录



使用

ruby 1.9.3p448
Rails 3.2.13
devise (2.2.3)

当用户遵循密码重置电子邮件或解锁帐户电子邮件(设计:可恢复,:可锁定(中的链接时,他们会首先重定向以登录。我在日志中看到,这是一个302。

我修改了

~/.rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_controller/metal/redirecting.rb

因此重定向方法在顶部添加了以下内容:

File.open("/home/myname/fooblah.txt", 'a'){|f| f.puts(caller()); f.puts "########"}

因此,查看重定向到哪里。在caller((链中,应用程序中没有任何代码正在调用redirect_to。所以我想知道是否有一些错误或怪癖导致了这个重定向。

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


更新

在.renv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/devise-2.3/app/controllers/devise/ulocks_controller.rb 中

# 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

那么它的默认重定向到根路径?但devise.yml说:

unlocked: 'Your account was successfully unlocked. You are now signed in.'

这似乎是魔鬼宝石中的不协调。。。

我想您已经添加了:authenticate_user!在您的应用程序控制器中,并已覆盖设备的控制器。

如果是这种情况,则必须添加skip_before_filter:authenticate_user!到超控控制器动作

最新更新