0

我正在为带有rails的android应用程序编写一个api。由于我对 rails 和 android 都是新手,所以我无法弄清楚 access_token 的东西。

我有一个 Token 模型,每次用户登录时,都会在 tokens 表中添加一个新的 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
4

1 回答 1

0

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

于 2012-11-04T21:26:56.007 回答