Rails:如何检查access_token是否已过期?

时间:2012-11-04 14:21:17

标签: ruby-on-rails access-token

我正在为带有rails的Android应用编写api。由于我是rails和android的新手,我无法想出access_token的东西。

我有一个令牌模型,每次用户登录时,新的access_token将被添加到令牌表中。我的问题是,如果我在创建令牌后设置了过期日期== 3天,当用户发送带有access_token的请求时,验证这一点的正确方法是什么?如何删除那些过期的令牌?

这是我的令牌模型:

# Table name: tokens
#
#  id           :integer          not null, primary key
#  access_token :string(255)
#  user_id      :integer
#  created_at   :datetime         not null
#  updated_at   :datetime         not null

class Token < ActiveRecord::Base
  attr_accessible   :access_token, :user_id
  before_validation :generate_access_token
  belongs_to        :user

  validates :access_token, presence: true, uniqueness: true
  validates :user_id,      presence: true, uniqueness: true

private

  def generate_access_token
    begin
      self.access_token = SecureRandom.hex
    end while self.class.exists?(access_token: access_token)
  end
end

1 个答案:

答案 0 :(得分:0)

您可以在令牌模型中添加expires_at列来处理它。您还需要一种检索新令牌的方法,该令牌可以更新现有令牌的密钥和过期,也可以为用户生成新的令牌记录并返回该记录。后者更像是Facebook为其访问令牌所采用的方法。