2

例如 API_key:4faa86aa5848207502000002和 API_secret 7375d7d1e89d3d602b184432fbcf3c09c7cb30676f19af9ac57d228be401

我应该使用SecureRandom吗?

谢谢!

4

2 回答 2

11

ActiveSupport::SecureRandom 将适用于实际的生成,但您还应该考虑一种在不同事件上使令牌无效和重置的方法。

由于您使用的是 Devise,请查看Token Auth Strategy您可以使用两个令牌(分别为 API Key 和 API Secret)编写类似的策略。您需要同时编写策略和模型,但在这两种情况下,Token Auth 示例都能让您走得更远。

作为起点(来自 Token Auth 示例),您的模型应该声明两个必需的参数。

module Devise
  module Models
    module APIKeyAuthenticatable
      ...
      def self.required_fields(klass)
        [:api_key, :api_secret]
      end

      def reset_keys
        self.api_key = self.class.api_key
        self.api_secret = self.class.api_secret
      end

您可能还想阅读设计的自定义身份验证策略。如果您希望在devise devise_oauth2_providable之上提供功能更全面的 API 身份验证解决方案,看起来不错。

于 2012-07-30T02:41:14.083 回答
0

我试过authlogic_api。这很容易实现。

于 2012-07-30T03:25:53.887 回答