2012-01-19 9 views
0

RESTfulアプリケーションでは、2つの要求の間に状態は維持されません。それぞれの要求は、同じユーザーによって送信されたとしても、まったく新しいものとして扱われます。私。セッションはありません。RESTful Webアプリケーションでのログイン情報の管理

この場合、ユーザーログイン情報はどのようにRESTアプリケーションで処理されますか?

  1. これは、ログインに成功した後、サーバーはセキュリティトークンを生成してクライアントに送信し、クライアントはそれ以降の各要求に対してそれを送り返しますか?
  2. セキュリティトークンがサーバーに格納されている場合は、上記の場合、データベース? (覚えている:セッションなし)。
+0

可能な複製[これを理解するのを手伝ってもらえますか? "一般的なRESTの間違い:セッションは無関係です"](http://stackoverflow.com/questions/544474/can-you-help-me-understand-this-common-rest-mistakes-sessions-are-irrelevant) –

答えて

1

ログインが成功した後、サーバはセキュリティトークンを生成し、それをクライアントに送信し、クライアントが後にそこにそれぞれ、すべての要求のためにそれを送り返す、ということですか? セキュリティトークンがサーバーに格納されている場合、上記の場合データベース? (覚えている:セッションなし)。

Ehrm。クライアントにトークンを送信します。このトークンは、各トークンに関連付けられた情報をサーバー側のデータベースから取り出すためにのみ使用されます。 セッションと呼ばれています。これは、データベースではなく、ファイルに情報を格納することを除いて、PHPセッションとまったく同じです。あなたはセッションを作り直しています。

とにかく、「セッションなし、状態なし」のマントラは過大評価され、あまり実用的ではないと思います。トークンを含む単純なクッキーを保存して、ユーザーを特定し、そのユーザーと(一部の)データを関連付けることは大丈夫だと思います。とにかく、アプリケーションの状態を保存していない(たとえば、以前にユーザーが行っていたこと、今やっていることなど)ことが最も重要だと思います。

0

トークンで暗号化されたすべてを持つことができ、各要求はそのトークンから名前、タイムスタンプなどを含むすべてのユーザー情報を取得できます。

サーバが知る必要があるのは、エンコード/デコードアルゴリズムだけです。

さらに、サーバーは認証サービス(完全に独立したボックスでもよい)を呼び出して、ユーザーを認証して認証することができます。

シンプルは常に良いです!