質問

私は、標準ユーザーとUserSessionモデルを使用して、私のアプリに認証のためにAuthlogicを使用しています。私は私のアプリにAPIを構築しています、と私は、単一のアクセストークンとAPIへのアクセスを認証します。私のアプリでは、すべてのユーザーがユーザーをbelongs_to会社、has_many。 APIは、企業に属するリソースにアクセスするためのものであるので、私は会社全体のための1つのアクセストークンを使用するようにしたいと思います。

私の最初に考えたのは、単一のアクセス、同社はその後、APIへのアクセスを許可するために使用するトークンAPIにアクセスする権限を持っていることを当社にダミーのユーザーを追加することでした。私がAuthLogicを持つユーザーの電子メールとパスワード空白を設定できるようには見えないので、これが出てパンされていません。私の次の思考は、おそらく私が会社自体にacts_as_authenticを追加することができましたが、私はこれがうまくいくかどうかはわかりません。

私は本当にそれが私のACLとうまく統合し、私はほとんどに建てを探していますfunctionallityを持っているように見えますので、解決のためにAuthlogicを使用したい。

それはact_as_authentic二つのモデルを持っていることは可能ですか? Authlogicに組み込まれた私は考えていないよ簡単な方法は、ありますか?私は彼らのAPIキー用のダミーのユーザーを使用することができる方法はありますか?私はこれを行う必要がありますどっち?

役に立ちましたか?

解決

私はこれを行う方法があります:

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

このはFYI ActiveResourceのための素晴らしい作品ます。

他のヒント

確かに、次の2つのモデルのacts_as_authenticを持つことができます。最小Authlogicデシベルフィールドを持つCompanyを設定し、それがAPIにアクセスするためのsingle_access_tokenだ使用しています。あなたのAPIは、ちょうどUserをシステムを使用しているCompany知らないことに注意してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top