2011-12-04 11 views
1

私の目標は、Rails 3 WebアプリケーションとActiveResource JSONおよびiPhoneアプリケーションとiOS 5ネイティブJSONを介して通信するスタンドアロンのRESTful Rails 3サービスを構築することです。私はそれぞれが走っているので、データの単一のテーブルがサービスアプリで公開されており、RailsアプリとiPhoneアプリの両方で呼び出してレンダリングすることができます。Rails 3 and iOS Architecture Review

私の質問は、認証と、WebアプリケーションとiPhoneアプリの両方または将来Androidアプリの両方で再利用できるものです。

私はこのサイトで行なった研究から、HTTP Basicは両方で動作するようですが、セッションやクッキーのようにWeb側でユーザーを正しくログアウトできない可能性があります。扱う。セッションを使用すると、iOS側での認証の設定にどのように変換されますか?

このプロジェクトでは、運動を学習したコードであるので、私は単にあなたが、少なくとも二つの問題をconflatingているように聞こえるなど工夫やAuthlogic、

答えて

1

を実装するのではなく、実装や建築指導を期待しています。

最初の問題は認証です。ユーザーが自分の発言者であるかどうかを判断する必要があります。認証のために、基本認証を行うことができます。クライアント証明書を使用することもできますが、これはおそらくあなたが探しているものではありません。

2つ目はセッション管理です。まず、各ページリクエストで基本認証を行い、データベースにセッション状態を保存できますが、ブラウザを使用するとユーザーをログアウトすることはできません資格情報をキャッシュします。

基本的な認証を必要とするログインページを考慮し、セッション管理を行うためにCookieをシュートすることができます。他のすべてのページは基本認証を必要としませんが、Cookieが存在しない場合は401に無許可を与えます。またはリダイレクトすることもできます。 iOSクライアントコードは、ログインページを最初に呼び出すと、Cookieを取得してから使用する必要があります。ログアウトするとcookie .. hrmmが削除されますが、ブラウザは引き続き基本認証資格情報をキャッシュします。

私は、あなたが望むものを得るための唯一の方法は、Webユーザーに(フォームからログアウトして他のユーザーとしてログインできるようにする)フォームベースの認証と、 iOSユーザーのための--authベースのシステム。両方の認証メカニズムの結果として、他のすべてのページで使用する必要があるCookieを返します。

+0

ありがとうXaxxon。 「基本認証を必要とするログインページを検討したい場合は、HTTP Basicを実行するときに組み込みのブラウザログインフォームを使用するか、カスタムログインフォームを作成する方法がありますか?ヘッダーはブラウザのログインフォームを見ないでしょうか? – textbox

+0

チケットを取得するには2つの方法があります。 iOSクライアントで基本認証を使用してセッションCookieを取得する方法と、従来のWebユーザーがセッションCookieを取得するために使用するフォーム認証を使用する別の方法です。 – xaxxon