You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为每个用户动态设置Ruby on Rails Devise Rememberable的config.remember_for

动态设置每个用户的remember_for时长(无需替换Timeoutable)

不需要替换整个Rememberable模块,直接在用户模型中重写remember_for方法即可覆盖全局配置,实现每个用户的动态时长设置,完全兼容原有代码。

实现步骤

  • 在你的用户模型(比如User)中添加以下代码:
class User < ApplicationRecord
  devise :database_authenticatable, :rememberable, # 保留原有devise模块配置
         :registerable, :recoverable, :validatable

  # 重写remember_for方法,返回用户专属的记住时长
  def remember_for
    # 示例:根据用户自定义字段返回时长,无自定义则用全局默认的1年
    # 假设用户表有custom_remember_duration字段,存储时长值(如30.days、6.months等)
    self.custom_remember_duration.presence || 1.year
  end
end

关键说明

  1. Devise的Rememberable模块在生成remember token时,会调用用户实例的remember_for方法获取过期时长,默认才会使用全局的config.remember_for配置,所以重写这个实例方法就能实现动态控制。
  2. 若用户的自定义时长后续修改,需要重新登录才能生成新的符合时长的remember token,旧token仍会按原过期时间失效。
  3. 可根据实际业务调整remember_for的逻辑,比如用整数字段存储天数,再转换为时长:
def remember_for
  custom_remember_days.present? ? custom_remember_days.days : 1.year
end

内容的提问来源于stack exchange,提问作者Klaus Kaserer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:15:02