1

ユーザー セッション情報が通常の HTTP/S GET 呼び出しでどのように保持されるかさえ理解していません。つまり、コードの行ごとの行やサーバー/クライアント交換のデータなどの詳細を意味します。基本的に、それは必要なものを含むサーバー上のセッションオブジェクトであり、「Cookie」WTHTIに含まれるそのオブジェクトのIDであることがわかります。これは、サーバーとの間で (Javascript に対して) 不透明に渡されます。その手に負えないクッキーをくそー。

セッション化された CRUD データベース エンドポイントを python/AppEngine に実装したいと考えています。セッションの永続化を行う最良の方法は何ですか? (フレームワーク、プラグイン、または既製のソリューションはありません。理解したいです)。これがどのアプリで実際にどのように行われているのかさえ知りませんが、それはとても一般的です.

API呼び出しごとに送信されるトークンのようなものだと思いますが、クライアント側のJavascript / DOMにトークンが横たわっているだけで、面倒ではありませんか?

クッキーについてはどうですか、クッキーは一体どのように機能するのでしょうか? これは私にとって非常に盲点であり、非常に重要です。透明性が低く、実装が簡単ではない理由がわかりません。

また、ID を転送してユーザーを識別し、ユーザーのセッション オブジェクトを呼び出すだけである場合、Cookie と (非食用) トークンの違いは何でしょうか?

ユーザー認証、セッションへの移行、トークンの使用、または Cookie の使用のみを行うことは完全に可能ですか?

私は独自のカスタム authent を (webapp2_extras の背面に) 実装しています。これは、安全な URL にあり、通常のソルティハッシュされたパスワードの予防措置をすべて備えています。しかし、私のすべての AJAX 機構の「トークン」と「クッキー」セッション部分は、いまだに私の心を吹き飛ばしています。

4

1 に答える 1

3

クッキー:

  1. Cookie は、Javascript や DOM ではなく、ブラウザの内部で処理されます。
  2. Cookie は非常に単純です。名前と値のペアが HTTP ヘッダーの文字列として送信されるだけです。
  3. 操作の原則は非常に単純です。サーバーはブラウザーに Cookie を送信し、その後、ブラウザーはそのサーバーへのすべての要求で Cookie を送信します (これは Cookie の種類とそのプロパティによって異なります)。
  4. Cookie にはいくつかの種類がありますが、セッション Cookie はセッションにバインドされています。ブラウザーはそれらをメモリに保持し、ユーザーがブラウザー アプリを閉じるまで送信します。

詳しくはこちらをご覧ください: http://en.wikipedia.org/wiki/HTTP_cookie

セッションは、同じユーザーからの一連の http 要求です。これらは通常、Cookie を使用して構築されるため (他の手法もあります)、セッションは Cookie に依存します (ただし、Cookie はセッションに依存しません)。

サーバー セッションは、特定の Cookie にバインドされた内部の永続的なストレージです。たとえば、本番環境の GAE は名前付きACSIDの Cookie を使用してセッションを追跡します。そのため、サーバーがセッション cookie を取得しない場合、これが新しいセッションであると想定し、新しいセッション cookie を作成してクライアントに送信し、そのセッションに関連付けられたオブジェクト ストレージを作成します。その後、サーバーはセッション Cookie を取得するたびに、その Cookie にバインドされたオブジェクト ストレージをロードします。

注: Cookie とセッションは認証ではありません。一連のリクエストが同じユーザーからのものであることはわかりますが、どのユーザーかはわかりません。これは認証の仕事であり、独自のもの (ユーザー名パスワード ベースなど) をロールすることも、利用可能な認証プロトコル (OpenID、OAuth) のいずれかを使用することもできます。

質問:

  • はい、サーバーとクライアントの両方を制御していれば、「非食用」トークンを使用して独自のセッション追跡を行うことができます。OTOH ブラウザーは標準ベースであり、すぐに使用できる Cookie を使用してセッションを提供します (ただし、JS で独自にロールすることもできます)。
  • セッションの永続化を行う最善の方法: python 用の既存のセッション ライブラリを使用します。学習目的で独自のものを展開することはできますが、本番環境では、テスト済みのソリューションの 1 つを使用する必要があります。
于 2013-04-07T20:05:02.140 に答える