Djangoフレームワーク(X):図(c)にクッキー、セッション

1.クッキー

クッキーは、時​​々複数形のクッキーと、ユーザのローカル端末に保存されている目的のセッションを追跡するため、特定のサイトのユーザIDを識別するために、(典型的には、暗号化された)データを指します。クッキーは、1993年3月、本発明もともとNetscapeの元従業員ルー・モントゥリました。クッキーは、ブラウザは、ディレクトリ内のテキストファイルに保存されているキー/値のクッキーになるのUser-Agent(通常はブラウザ)に送信され、サーバによって生成され、それが次の同じサイトのCookieにリクエストを送信しますサーバー(ブラウザはクッキーを有効にするために設定されている場合)。サーバは、ユーザが正当なユーザと再びなどにログインする必要があるかどうかを知ることができるように、クッキーはサーバによって定義された自分の名前と値を開発することができます。クッキーは、HTTPトランスポートの状態を決定するために、定期的にスクリーニング情報と保守情報を用いて、任意のサーバを含むことができます。クッキーは、最も一般的なユーザー名を覚えています。

コンピュータのブラウザを他の人が使用することができるので、クッキーはブラウザにプレーンテキストで保存されている情報であり、パスワードなどの機密情報を保存しないことをお勧めします。

1.1クッキー機能

フォーマットキーと値のペアの情報を格納するクッキー。

こうしたアクセスするときitcast.cnがitcast.cn書き込みクッキー情報にbaidu.com、アクセスできないアクセスに同じブラウザを使用して、ブラウザにCookie情報を書いたとして、Cookieドメインベースのセキュリティ、クッキー異なるドメイン名がお互いを訪問することができません、 。

ブラウザが要求すると、関連するすべての情報クッキーサイトとWebサイトは、ブラウザの店のWebサーバーに送信されます。

代表的なアプリケーション:ユーザー名、ウェブサイトの広告のプッシュを覚えておいてください。

これらの広告は、これは、淘宝網のオンラインアクセスフェニックスクッキーですが、実際には一般的に、ネストされたiframeタグ淘宝網を使用して、そうではないように見え、あなたがこれまでにフィルタリングする淘宝網の商品グループやその他の条件にクリックされたプッシュ商品持ってに基づいていますフェニックスのページへの広告ページ、ので、淘宝網のクッキーは、フェニックスに読まれていないが、それでも淘宝網は、「開発者ツール」の表示要素を通読します。

1.2設定されたCookie

オープンbooktest / views.pyファイルには、ビューcookie_setを作成します。

DEF (リクエスト)cookie_set:
    応答 =のHttpResponse(" 応答を参照してください。設定されたCookie <H1の>パケットヘッダ</ H1の> " 
    response.set_cookie(' のH1 '' こんにちは' の戻り応答

オープンbooktest / urls.pyファイル、構成URL。

URL(R ' ^ cookie_set / $ '、views.cookie_set)、

お使いのブラウザで次のURLを入力します。

http://127.0.0.1:8000/cookie_set/

Cookieの設定は、「開発者ツール」のレスポンスヘッダに情報を表示することができます。

1.3には、クッキーを読みます

クッキークッキープロパティ情報は、アクセス要求ヘッダー、要求オブジェクトに含まれています。

オープンbooktest / views.pyファイルには、ビューcookie_getを作成します。

DEF cookie_get(リクエスト):
    応答 =のHttpResponse(" 读取クッキー、数据如下:<BR> " であれば ' H1 '  request.COOKIES:
        Response.Writeを(' <H1> ' + request.COOKIES [ ' H1 ' ] + ' </ H1> ' の戻り応答

オープンbooktest / urls.pyファイル、構成URL。

URL(R ' ^ cookie_get / $ '、views.cookie_get)、

お使いのブラウザで次のURLを入力します。

http://127.0.0.1:8000/cookie_get/

「開発者ツール」を開き、あなたはCookieリクエストヘッダに情報を表示することができます。

2.セッション

敏感で重要な情報については、そのようなユーザー名、バランス、レベル、検証情報コードとして、ブラウザに格納することができないサーバに格納されることが推奨されます。

サーバーの状態に保持するプログラムは、セッションです。

2.1セッションを有効にします

セッションDjangoプロジェクトがデフォルトで有効になっています。

オープンTEST3 / settings.pyファイルにセッションミドルウェアMIDDLEWARE_CLASSESを有効にします。

 

 

無効にセッション:セッションミドルウェアは削除されます。 

2.2ストレージ

SESSION_ENGINEセッションデータ保存モードを指定された設定項目をオープンTEST3 / settings.pyファイルは、Redisのような、データベース、キャッシュに格納することができます。

データベースに格納されている、以下の設定は、書くことができます書き込むことができない、これはデフォルトのストレージです。

SESSION_ENGINE = ' django.contrib.sessions.backends.db '

キャッシュに保存されている:あなたは、書き込みより速く読むとする方法よりも、データベースを失った場合、マシンのメモリに保存され、あなたが回復することはできません。

SESSION_ENGINE = ' django.contrib.sessions.backends.cache '

ハイブリッドメモリ:マシンのメモリからの優先アクセス、データベースからのアクセスがない場合。

SESSION_ENGINE = ' django.contrib.sessions.backends.cached_db '

データベースに保存されている場合は、用語のセッションでINSTALLED_APPSにアプリケーションをインストールする必要があります。

 

 

移行後にデータベース内のテーブルの格納されたセッションを作成します。 

 

 

以下に示すようなテーブル構造。

 

 

キー、値、有効期限が切れる:3つの動作セッションのデータを含むテーブル構造から見ました。

2.3クッキーに依存

すべてのセッションがサーバーに保存されますリクエスタは、サーバがどのように依頼者とセッションデータのそれとの間の対応を区別するために?

在使用Session后,会在Cookie中存储一个sessionid的数据,每次请求时浏览器都会将这个数据发给服务器,服务器在接收到sessionid后,会根据这个值找出这个请求者的Session。

如果想使用Session,浏览器必须支持Cookie,否则就无法使用Session了。

存储Session时,键与Cookie中的sessionid相同,值是开发人员设置的键值对信息,进行了base64编码,过期时间由开发人员设置。

2.4 对象及方法

通过HttpRequest对象的session属性进行会话的读写操作。

以键值对的格式写session。 

request.session['']=值

根据键读取值。

request.session.get('',默认值)

清除所有session,在存储中删除值部分。

request.session.clear()

清除session数据,在存储中删除session的整条数据。

request.session.flush()

删除session中的指定键及值,在存储中只删除某个键及对应的值。

del request.session['']

设置会话的超时时间,如果没有指定过期时间则两个星期后过期。

request.session.set_expiry(value)

如果value是一个整数,会话将在value秒没有活动后过期。

如果value为0,那么用户会话的Cookie将在用户的浏览器关闭时过期。

如果value为None,那么会话永不过期。

おすすめ

転載: www.cnblogs.com/liuhui0308/p/12229441.html