ruby on rails -设计-我可以绕过超时检查



我在Rails 3应用程序中使用了设计。我想抑制某些功能(url)的"会话超时"检查。有什么设置可以这样做吗?

一般来说,任何不需要身份验证的函数都不应该超时(因为,实际上,不需要会话)。

同样,当我通过电子邮件向用户发送链接时,我不希望该链接被会话超时错误阻塞。

最后——很明显——登录和注销函数不应该因为会话超时错误而失败。

我们的应用程序现在有所有这些症状。是否有一个"skip_before_filter"缺失?

谢谢。


EDIT:场景详细信息

(1)用户在会话中,然后关闭浏览器。之后,他们打开浏览器进入登录页面并登录。身份验证后,他们得到一个"会话超时"错误消息,并返回到登录页面!!

如果用户正在登录,我想忽略任何"Session Timeout"错误

(2)用户处于会话状态,但超过了超时时间。他们点击电子邮件中的链接,进入我们的应用程序。应用程序抛出"会话超时"错误消息,并将它们带到登录页面,而不是链接目的地。(如果他们再次点击电子邮件中的链接[没有会话在播放],应用程序继续处理链接,没有错误。)

我想忽略任何"会话超时"错误,如果用户正在遵循一个包含有效(单次使用)令牌的链接,他们通过电子邮件收到。

(3)用户处于会话状态,但超时后处于空闲状态。他们点击网页上的"退出"链接。应用程序终止会话,返回到登录页面,但显示"会话超时"错误消息。

我想忽略任何"Session Timeout"错误如果用户正在注销

(4)用户处于会话状态,但超时后处于空闲状态。它们转到不需要身份验证的功能(例如,帮助页面、信息显示等)。应用程序抛出"会话超时"错误并终止会话。他们试图再次进入该功能,并且不受干扰地继续进行。

我不希望"Session Timeout"错误中断到不需要身份验证的页面的导航

所有这些函数都被标记为不受authenticate user before_filter的约束。但是,仍然应用会话超时检查。

如何防止某些函数/方法的会话超时错误?

class User < ActiveRecord::Base
  devise (...), :timeoutable
  def timeout_in
    if self.admin? 
      1.year
    else
      2.days
    end
  end
end

如果存在会话超时,显然您的用户将被重定向到登录页面。对于所有需要身份验证的方法,您应该使用before_filter :authenticate_user!

至于你的电子邮件,我想你可以使用令牌

相关内容

  • 没有找到相关文章

最新更新