我在我的Rails 3应用程序中使用了Devise。我想抑制"会话超时"检查某些功能(网址)。是否有应该这样做的设置?
通常,任何不需要身份验证的功能都不应超时(因为实际上不需要会话)。
同样,当我通过电子邮件向用户发送链接时,我不希望会话超时错误阻止该链接。
最后 - 显然 - 由于会话超时错误,登录和注销功能永远不会失败。
我们的应用程序现在具有所有这些症状。是否有" skip_before_filter"丢失?
感谢。
编辑:情景详情
(1)用户正在进行会话,然后关闭浏览器。之后,他们将浏览器打开到登录页面并登录。经过身份验证后,他们会得到一个会话超时"错误消息并返回登录页面!!
我想忽略任何"会话超时"错误如果用户正在登录。
(2)用户正在进行会话,但超出了超时期限。他们点击电子邮件中的链接,将其带入我们的应用程序。应用程序抛出会话超时"错误消息并将它们带到登录页面而不是链接目标。 (如果他们再次单击电子邮件中的链接[没有正在进行的会话],应用程序将继续处理该链接,而不会出错。)
我想忽略任何"会话超时"错误如果用户正在关注包含他们通过电子邮件收到的有效(一次性)令牌的链接。
(3)用户正在进行会话,但超时超时。他们点击"退出"网页上的链接。应用程序终止会话,返回登录页面,但显示"会话超时"错误信息。
我想忽略任何"会话超时"如果用户退出,则出现错误。
(4)用户正在进行会话,但超时超时。它们转到不需要验证的功能(例如,帮助页面,信息显示等)。应用程序抛出会话超时"错误并终止会话。他们试图再次使用该功能,不间断地继续。
我不想要"会话超时"错误中断导航到不需要身份验证的页面。
所有这些功能都被标记为免除身份验证用户 before_filter。但是,会话超时检查仍然适用。
如何防止某些功能/方法的会话超时错误?
答案 0 :(得分:0)
class User < ActiveRecord::Base
devise (...), :timeoutable
def timeout_in
if self.admin?
1.year
else
2.days
end
end
end
如果会话超时,显然您的用户将被重定向到登录页面。并且您应该将before_filter :authenticate_user!
用于需要身份验证的所有方法。
至于你的电子邮件,我想你可以使用令牌