Ruby on rails 3 Rails在尝试重置或解锁时设计重定向以登录
使用 当用户从密码重置电子邮件或解锁帐户电子邮件(designe:recoverable,:lockable)中点击链接时,他们首先被重定向以登录。我在日志中看到,这是302 我改了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/
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.'