[Rails] RESTクライアントの認証を動的に切り替える。
こんにちわ。ばたっちです。
RESTアプリケーションはステートレスなので、認証が必要な場合は毎回リクエスト毎に認証が必要になります。
認証方法は HTTP Basic認証が推奨?されていて、Rails 2.0では Basic認証機能が強化(追加?)されてるようですね。
クライアント側でのリソースの参照に ActiveResourceを使う場合は、サイトのURLにユーザ名、パスワードを追加しておけばOKです。
こうしておけば、リクエスト時に Authorizationヘッダを追加してくれるんですね。
ところで、この site属性はクラススコープなので、リソース単位に一意になるんですが、複数のアカウントで切り替えたい場合(普通はないのかな?)にちょっと困ります。
ActiveResourceでは siteのURLを元に、connection属性(これもクラススコープ)を作っているようなので、これをいじればいいのかもしれません。
別の方法として、headers属性(ハッシュ、クラススコープ)というのがあって、ここにヘッダを追加しておくと、リクエスト送信時にヘッダに追加してくれるようです。
ということは、ここに Authorizationヘッダを追加してやれば、動的に認証情報を設定できるのかも。。
というわけで、以前作った MultiModelScope(see. [Rails] 複数のモデルに with_scope。)を真似て、MultiResourceScopeというのを作ってみました。
複数のリソースにまたがって、動的に認証を切り替えたいという場合に使えます。
こんなカンジに使うことを想定。
認証方法を変えられるようにしたり便利かも。A^^;