AuthlogicでAPIを検証します
-
18-09-2019 - |
質問
私は、標準ユーザーと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
知らないことに注意してください。