0

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

redirect_to new_path

我也试过

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

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

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

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

4

1 回答 1

0

我为我的场景找到了解决方法。从 中build_access_token,我创建并返回一个empty access_token带有自定义标志的。因此回调控制器可以处理标志并进行重定向。

在 Rack 上下文中很难进行重定向,因为调用堆栈非常深callback_phase (OmniAuth::Strategies)

于 2012-07-05T03:07:13.417 回答