2012-01-22 35 views
2

登録済みまたは非登録ユーザー用のバックボーンとRequireJSを使用してjsアプリケーションを作成します。データベースからデータを取得するには、単純なJSON Webサービスを使用しますが、もちろんいくつかのメソッドはクエストでは使用できません。問題は、どこからどのように私はすべてのビューでそれをリロードせずにサーバーから取得する認証データを格納する必要があるか分からないということです。クッキーを使うべきですか?バックボーンとAMDモジュールを使用する場合、認可データを保存する場所はどこですか?

答えて

6

あなたの認証、認証方法、およびユーザーのために考慮する必要があるセキュリティの種類によって異なると思います。 RESTfulにしようとしている場合は、セッションを保存する(少なくともサーバー側)ことはできません。可能ですが、サーバに状態が保存されているためにRESTfulではありません。私はクライアント側の状態を保存するのは大丈夫だと聞いてきましたが、私が読んだことから、このアプローチを取る特定の実装についてコミュニティがどのように感じているのか分かりません。 (クッキーのように、私は後でこれを再訪します)

あなたは誰かがユーザー名とパスワードでログインしたとします。その情報をあなたのBackboneアプリケーションで保持することができます。おそらく、これを行うAUTHというモデルがあります。サーバーに要求するたびに、サーバーが認証し、指定されたリソースへのアクセスを許可または拒否する各時点でそのデータを送信します。基本認証を使用する場合、この情報はヘッダーにあると思います。 SSLを使用すると、この情報を有線経由で送信することに関する主要なセキュリティ上の懸念が緩和され、その他の議論ではこれが私たちが使用しているものと仮定します。

これを行う方法のもう1つは、暗号化されたCookie、暗号化されたCookieセッションを使用することです。これが私の現在のアプリケーションで行うことです。正直なところ、これがRESTfulな原則に違反しているかどうかはわかりません。ウェブ上の一般的な話題には、「クッキーが悪い、セッションが悪い」という人がいるようです。クッキーを使用すると、誰かがユーザーのコンピュータにアクセスした場合にハイジャックに晒されることがありますが、アプリケーションやセキュリティの必要性によっては、不合理なオプションではない可能性があります。それは私のために働く、それがRESTfulでないなら、私はそれをRESTLikeと呼ぶのが好きです。

終了するにはセットアップについて説明します。これについてのあなたの考えだけでなく、スタックの意見を得ることはいいですね。

基本的には、誰かがメインページに行くと、サーバーは暗号化されたCookieセッションをチェックします。クッキーセッションが無効または存在しない場合、ユーザーにログインする機会を持つ通常のページが表示されます。彼らがログインすると、私はその情報をPOST経由で送信するので、URIではなく要求の本体に入ります。 (これは技術的にはPOSTを使用してリソースを保存するため、REST HTTP動詞の概念に違反します)。その情報が処理されると、ユーザー名を確認し、固有のsaltで作成されたハッシュを渡し、サーバーは暗号化されたセッションCookieを作成し、それをユーザーに返します。今、私のユーザーが認証を必要とするルートに当たるたびに、サーバーはクッキーがまだ有効かどうか(タイムリミット、ユーザー情報など)をチェックし、そうであればアクセスを許可します。そうでない場合は、クッキー情報を破棄し、適切なステータスコードを返信します。バックボーンアプリは、認証されていないユーザーの手に入るべきではないビューやデータをリセットし、ログイン画面を表示することでこれに反応します。

これはあなたのアイデアを提供します。これは私のやり方に対する答えですが、誰かが批判やより良いアイデアを持っているなら、私は代わりにそれらをアップボートするのが喜ばしいでしょう。

関連する問題