在config/initializers/devise.rb
文件中,
config.timeout_in = 30.minutes
但这会影响从浏览器登录的用户,并且我认为重置auth_token。但是,我需要在很短的时间后重置auth_token。怎么做?
答案 0 :(得分:2)
您可以通过在User模型中创建名为expire_auth_token_on_timeout
的类方法来控制令牌超时的行为。如果设置了此方法,则设置将在超时(与用户会话一起)时重置令牌。 (这在timeoutable.rb)中定义
现在,如果你想让auth令牌过期,你可以挂钩到同一个warden钩子并亲自检查并自己打电话给record.reset_authentication_token!
。
有问题的回调是after_set_user
,如the warden wiki
但是你必须考虑如何解决这个问题,并在模型中创建一个单独的时间戳,记录最后一次授权令牌访问,以确保在一定时间后使其过期。 (您还应该能够通过请求对象确定请求是否是令牌请求 - 请记住,您处于机架级别,因此您可以通过env对象访问请求。)
很抱歉,我无法为此提供任何示例代码,但您必须使用该实现,并且我没有方便的测试用例。