使用设计API进行自定义身份验证

时间:2011-12-29 11:55:16

标签: ruby-on-rails ruby-on-rails-3 api authentication devise

所以我在这里有一个小巧的组合

Company has many Users
User belongs to Company

管理用户以使用设计进行身份验证

class User < ActiveRecord::Base

  belongs_to :company

  devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable

您可以以用户身份登录并创建所有属于公司的对象,而不是用户,例如:Text。 (company.texts

现在我使用acts_as_api gem创建了一个简单的API。 为此,我只需修改我的文本控制器,即。节目动作。

class TextsController < ApplicationController

  load_and_authorize_resource

  def show
    #@text = Text.find(params[:id])
    respond_to do |format|
      format.html
      format.json { render_for_api :texts_all, :json => @text }
    end

这在网站上运行得很好。 问题是API。我不想通过用户模型访问api时进行身份验证。该公司确实有一个名为:hash的属性,我想在API中使用Auth。

我不知道如何使用设计(或任何其他方法)来实现这一点。 所以默认情况下,设计希望用户登录,因为我的控制器中有load_and_authorize_resource,这对于html响应很好,但对于json响应则没有。

任何想法?

感谢您阅读此内容。如果不清楚,请发表评论!

2 个答案:

答案 0 :(得分:0)

根据公认的格式标题有条理地应用auth过滤器:

# override in controllers related ot API
def authenticate_user!
  respond_to do |format|
    format.html { super } # just like before
    format.json { enforce_api_auth }
  end
end

现在API调用强制执行自己的身份验证。

答案 1 :(得分:0)

只需使用令牌验证码,并在您的API上发送每个请求的令牌。

Here is a tutorial for it.