重定向到sign_in后,设计重定向到root

时间:2012-05-30 15:10:12

标签: ruby-on-rails-3 redirect devise flash-message

我正在尝试向使用Devise的应用添加新的登录条件。

如果请求来自不在我的白名单中的IP,我想阻止登录并重定向回sign_in页面,并显示一条flash消息,说明该登录来自外部IP。

重定向有效,但我设置的Flash消息不会返回到sign_in页面。我认为这是因为Devise神秘地在重定向链中添加了另一个重定向(这会消除flash消息,因为flash消息只适用于一个请求)。

这就是我正在做的事情:我检查请求ip是否在我的白名单中。如果不是,我会重定向到/users/sign_in并设置闪存通知以显示用户无法登录的原因。

这是我迷路的地方 ...重定向到/users/sign_in后,用户神秘地被重定向到/,后者又重定向回{{1} }}

最后一次重定向回sign_in页面是我们为用户未登录而定义的那个。但重定向回根URL会让我感到沮丧。我没有覆盖sessions_controller中的/users/sign_in动作(这是发生这种神秘重定向的地方......),所以这就是我所知道的所有Devise逻辑。

有没有人猜测发生了什么,是否存在导致重定向的设备配置,或者我是否应该采用另一种方式处理这一切?

在我的sessions_controller中

new

1 个答案:

答案 0 :(得分:1)

根据Devise wiki,您可以通过向用户模型添加active_for_authentication方法为用户添加额外的“验证”。否则,devise_for路由方法确实接受:constraints选项,就像常规的Rails路由约束一样。 matches?的类中,您应该做得很好。