如何在omniauth策略中使用redirect_to?

时间:2012-07-03 00:51:59

标签: ruby-on-rails redirect module omniauth

我有一个场景,在我定制的OmniAuth :: Strategies模块中的build_access_token方法的某些条件下,我需要重定向到浏览器到另一个链接。但是我为redirect_to获得了NoMethodError(因为策略在Rack上下文中)。

redirect_to new_path

我也试过

Rack::Response.new(["302 Moved"], 302, 'Location' => new_path).finish

但失败了。似乎Rack有一个深度调用堆栈。

如果我在策略中引发错误,则无法在ApplicationController中捕获它。

如何在OmniAuth :: Strategies中使用redirect_to?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案的方法。从build_access_token开始,我创建并返回带有自定义标记的empty access_token。所以回调控制器可以处理标志并进行重定向。

很难在Rack上下文中的callback_phase (OmniAuth::Strategies)重定向,因为有很深的调用堆栈。