Ruby on Rails - 如何在omniauthable设计中处理过时的访问令牌?

时间:2011-11-07 06:12:43

标签: ruby-on-rails devise omniauth

如何在设计中检测用户的访问令牌是否陈旧并因此将用户注销?

1 个答案:

答案 0 :(得分:4)

你为什么需要这个?存在timeoutable选项,允许跟踪会话超时。我可能错了,但令牌是有时间生存的cookie密钥,它们由浏览器跟踪。来自Devise(钩子):

  

每次设置记录时,我们都会检查其会话是否已超时    或不,基于上次请求时间。如果是,则记录并记录    重定向到登录页面。此外,每次请求来和    记录已设置,我们在其范围内的会话中设置最后一个请求时间    验证以下请求中的超时。

----更新(不要把它当作大的纪念)---

在大多数情况下,当您使用登录时,没有要求从外部服务获得身份验证。因此,在用户登录的情况下(即会话cookie存在且会话有效),同时她从外部服务注销,这意味着她可以使用您的网站,直到您的会话为止到期。同样,一旦用户需要身份验证,就会使用外部服务。因此,当您的网站上的会话过期并且用户尝试使用外部服务登录时,她将被重定向到她将登录的外部网站(如果已经登录则不会)。然后外部服务重定向回您的站点,提供回调(在大多数情况下路径为/ auth /:provider / callback),您的控制器(或devise提供的默认值)将根据需要创建用户和他的会话