首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Authlogic验证API

使用Authlogic验证API
EN

Stack Overflow用户
提问于 2009-11-07 07:59:02
回答 2查看 2.3K关注 0票数 2

我在我的应用程序中使用授权逻辑进行身份验证,使用标准的用户和UserSession模型。我正在将API构建到我的应用程序中,并且我希望使用单个访问令牌来验证API访问。在我的应用程序中,每个用户belongs_to一个公司,has_many用户。该API用于访问属于公司的资源,因此我希望为整个公司使用一个访问令牌。

我最初的想法是向Company添加一个只有权访问API的虚拟用户,然后公司将使用其单个访问令牌来授予对API的访问权限。似乎我不能用AuthLogic将用户的电子邮件和密码设置为空,所以这是不可行的。我的下一个想法是也许我可以将acts_as_authentic添加到公司本身,但我不确定这将如何工作。

我真的很想使用Authlogic来解决这个问题,因为它与我的ACL很好地集成在一起,而且似乎具有我想要的大部分内置功能。

有没有可能有两个act_as_authentic的模型?有没有一种我没有想到的更简单的方法,内置到Authlogic中?有没有一种方法可以使用虚拟用户作为他们的API密钥?我应该用哪种方式呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-07 11:35:17

我这样做的方式是:

代码语言:javascript
复制
class Something
  acts_as_authentic do |m|
    # API keys are auto generated (See +regenerate_api_key+.)
    # The password is not used for authentication (its just an api_key lookup), so a dummy field is used
    m.login_field = :api_key
    m.validate_login_field = false
    m.validate_email_field = false
    m.crypted_password_field = :api_key_hash
    m.require_password_confirmation = false
    m.validate_password_field = false
    m.crypto_provider = ApiKeyCrypto
  end
end

class ApiKeyCrypto
  def self.encrypt(*tokens)
    'X'
  end

  def self.matches?(crypted, *tokens)
    crypted == 'X'
  end
end

#application_controller.rb
def current_session
  return @current_session if defined?(@current_session)
  ...
    format.any(*api_formats) do
      @current_session = SomethingSession.find
    end
  end
  @current_session
end
def api_formats
  [:xml, :json]
end

这对ActiveResource来说非常有用,供参考。

票数 4
EN

Stack Overflow用户

发布于 2009-11-08 00:22:11

当然,您可以有两个型号的acts_as_authentic。使用最少的Authlogic db字段设置Company,并使用它的single_access_token进行API访问。请注意,您的应用程序接口将不知道哪个User正在使用系统,只知道Company

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1691330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档