2011-08-09 29 views
1

Chromeの拡張機能ではなく、Chromeの拡張機能を作成しています。このアプリケーションには、html、js、image、およびcssファイルが含まれています。アプリケーションは、データをフェッチするためにサーバーに接続します。私はこれを行うことで、ユーザーがダウンロードしたファイルの量を減らすことにしました。 Backbone.jsの使用私のアプリケーションにはMVCアーキテクチャがあります。したがって、アプリケーションはjsonを送信します。Chrome拡張機能/ウェブアプリセッションコントロール

今これを言って、私はセッション管理が必要です。私は組織がGoogle Appsを持っているので、Google認証を使用する予定です。私は、ユーザーがGoogleの認証を使用してログインした後、サーバーがアプリケーションが要求を行うたびにユーザー名を取得するという方法が必要です。

可能であれば、リクエストヘッダーにユーザー名を追加することをお勧めします。クッキーを使うべきですか?この場合、どのようにクッキーを使うことができるか教えてください。

答えて

1

アプリでGoogle認証を使用する場合は、必要なものがすべて付属するGoogleのOAuth tutorialをご覧ください(これを使用してセットアップする時間はかかりません)。

セッション管理については、 Googleが使用するOAuthの実装では、トークンはlocalStorageに格納されます。また、extensions overviewで簡単に述べたように、我々はlocalStorageを使用してデータを格納することが期待されている。だから、あなたのアプリの生涯(アンインストールされるまで)にアクセスできるように、ここにユーザー名を保存することをお勧めします。ただし、ここに保存されている名前を管理し、ユーザーがログインしたりログアウトするときに何が起きるかを検討する必要があります。それは言った。 sessionStorageがこれまでに使用したことのない優れたオプションであるかどうかは分かりません。

localStorageとそのカウンターパートのみを格納文字列私は、それぞれ自分の価値観を取得して設定するparsestringifyにを使用してラッパーを使用することをお勧め。

+0

の私の実装をチェックしてください。またhttp://code.google.com/chromeを参照してください。 /extensions/trunk/experimental.settings.html。これは設定を同期しやすい方法で保存する新しい(しかし実験的な)方法です。 –

+0

コールバック関数を使用して設定を取得したり、少なくとも私にとっては、コードの魅力が落ち着いたりしないので、APIは私にはあまり魅力的ではないことを認めなければなりません。私の意見では、設定のために単純なgetter/setterを使うべきです。うまくいけば、これは変更されますが、既存のAPIでコールバック関数を使用するため、私は彼らが理由でこのアプローチを使用していると推測しています。 – Alasdair

2

これは遅れている可能性がありますが、ユーザーがブラウザでCookieを有効にしているため、より洗練されたソリューションを提示したいと思います。 別の質問で私のanswerをまず読んでください。

コンテンツスクリプトからクロスオリジンxhrを送信できるようになりました。すべての認証とセッション管理をサーバに保存するだけです。つまり、ユーザーがログインしているかどうかを表示し、サーバーの応答に基づいてクライアントにログアウトボタンを表示するだけです。

次の手順に従ってください。クライアントで

  1. ユーザーが認証を気にすることなく、サーバーにXmlHttpRequestsでを作り、私は以下の説明サーバからの応答にタブを維持盲目的に、あなたのChromeウェブアプリにアクセスするたびに。

  2. サーバーでは、有効なセッションまたはセッションCookieの要求を確認するたびにサーバーが表示されます。セッションが有効である場合、適切な応答を送信します。エラーが送信されない場合は、401またはセッションが有効でないことをクライアントに伝えるその他の応答を送信します。 401のようなエラーコードを送信すると、クライアントにログインしていないことを知らせるために汎用スクリプトを置くことができます。

  3. クライアントサーバーからの応答が適切な場合はそれを表示し、そうでない場合はWebサイトへのログインリンクを表示します。

  4. 重要:表示ログアウトボタンユーザーがログインしている場合

このin my extension

+0

'有効なセッションまたはセッションクッキーを要求するかどうかを確認するたびに、サーバで.'私はこれを理解していません。拡張機能がどのようにセッションCookieを送信することができるでしょうか? – avi

+0

Chromeは、内部データベースにドメインごとのCookieを保存します。ブラウザーからシークレットモード以外のリクエストを送信すると、chromeはそのドメインに関連付けられたすべてのCookieを送信します。 –

+0

は、これらのクッキーは安全で誰にもアクセスできませんか? – avi

関連する問題