ホームページ > バックエンド開発 > Python チュートリアル > PythonでセッションとCookieを扱う方法

PythonでセッションとCookieを扱う方法

王林
リリース: 2023-05-10 11:19:12
転載
950 人が閲覧しました

Session と Cookie

Web 開発では、Session と Cookie はクライアントとサーバーの間でデータを転送するために使用される 2 つの一般的なテクノロジです。 Session はユーザー データをサーバー側に保存するサーバー側のテクノロジーであり、Cookie はユーザー データをブラウザーに保存するクライアント側のテクノロジーです。

セッションの使い方

セッションとは、ユーザーデータをサーバー側に保存する技術です。 Django では、セッションは SessionMiddleware を通じて実装され、各リクエストが処理される前にストレージからユーザーのセッション データを読み取り、それを request.session 属性に保存して、ビュー関数がアクセスできるようにします。セッションデータ。

SessionMiddleware をアクティブにする

Session を使用するには、Django プロジェクトの構成ファイルで SessionMiddleware をアクティブにする必要があります。これにより、Django はリクエストごとに Session オブジェクトを自動的に作成します。 。 django.contrib.sessions.middleware.SessionMiddlewareMIDDLEWARE に追加して、SessionMiddleware を有効にします。

MIDDLEWARE = [
    # ...
    'django.contrib.sessions.middleware.SessionMiddleware',
    # ...
]
ログイン後にコピー

セッション構成

Django のセッションには、データベース、キャッシュ、ファイル システムなど、さまざまな保存方法があります。 Django 設定ファイルでは、SESSION_ENGINE を通じてセッションの保存方法を指定し、SESSION_COOKIE_AGE を通じてセッションの有効期限を指定できます。

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
SESSION_CACHE_ALIAS = 'default'
SESSION_COOKIE_AGE = 86400
ログイン後にコピー

上記の設定は、セッションがデフォルトのキャッシュを使用してキャッシュに保存され、セッションの有効期限が 1 日であることを示しています。

セッションの使用

ビュー関数でのセッションの使用は非常に簡単で、request.session プロパティにアクセスするだけです。以下は、Session の使用例です。

def index(request):
    count = request.session.get('count', 0)
    request.session['count'] = count + 1
    return HttpResponse('count: %d' % count)
ログイン後にコピー

上記の例では、request.session プロパティにアクセスし、get メソッドを使用して、という名前のオブジェクトを取得しました。 count セッションデータ。 count データがセッションに存在しない場合、get メソッドはデフォルト値 0 を返します。次に、count を 1 ずつインクリメントし、セッションに保存します。ユーザーが再度ビュー関数にアクセスすると、以前に保存した count データを取得し、それに 1 を加えてセッションに更新できます。

セッションに保存されるデータにはサイズ制限があることに注意してください。 Django 構成ファイルでは、SESSION_COOKIE_MAX_SIZE を通じてセッション サイズ制限を指定できます。セッションに保存されたデータが制限を超えると、SuspiciousOperation 例外がスローされます。

Cookieの使用について

Cookieは、ユーザーデータをクライアント側に保存する技術です。 Django では、HttpRequest オブジェクトと HttpResponse オブジェクトを使用して、Cookie の読み取りと書き込みを行うことができます。

Read Cookie

HttpRequest オブジェクトでは、COOKIES 属性を通じてすべての Cookie にアクセスできます。以下は Cookie を読み取る例です:

def index(request):
    count = request.COOKIES.get('count', 0)
    response = HttpResponse('count: %d' % count)
    response.set_cookie('count', count + 1)
    return response
ログイン後にコピー

上記の例では、request.COOKIES プロパティにアクセスし、get メソッドを使用して Cookie という名前の Cookie を取得しました。 count 個の Cookie。 count データが Cookie に存在しない場合、get メソッドはデフォルト値 0 を返します。次に、count を 1 ずつインクリメントし、それを Cookie に保存します。最後に、HttpResponse オブジェクトを返し、set_cookie メソッドを使用して、更新された count を Cookie に保存します。

Cookie に保存されるデータにもサイズ制限があることに注意してください。 Cookie のサイズ制限はブラウザによって異なる場合があります。 Django では、SESSION_COOKIE_MAX_SIZE を通じて Cookie サイズ制限を指定できます。 Cookie に保存されたデータが制限を超えると、SuspiciousOperation 例外がスローされます。

Cookie の書き込み

HttpResponse オブジェクトでは、set_cookie メソッドを使用して Cookie を書き込むことができます。以下は Cookie への書き込みの例です:

def index(request):
    response = HttpResponse('Hello, world!')
    response.set_cookie('name', 'value', max_age=3600, expires=None, path='/', domain=None, secure=False, httponly=False, samesite=None)
    return response
ログイン後にコピー

上記の例では、HttpResponse オブジェクトを作成し、set_cookie メソッドを使用して # という名前の値を設定します。 # #name と値 value を持つ Cookie が応答に書き込まれます。 max_ageこのパラメータは、Cookie の最大存続期間を秒単位で指定します。 expiresパラメータは Cookie の有効期限を指定します。指定しない場合は、ブラウザを閉じると Cookie の有効期限が切れることを意味します。 path パラメータは、Cookie のアクション パスを指定します。つまり、指定されたパスにあるリクエストのみが Cookie を送信します。 domain パラメーターは Cookie のスコープを指定します。つまり、指定されたドメイン名へのアクセス要求のみが Cookie を送信します。 secureこのパラメータは、Cookie が HTTPS プロトコル経由でのみ送信できるかどうかを指定します。 httponlyこのパラメータは、Cookie に JavaScript ではなく HTTP プロトコル経由でのみアクセスできるかどうかを指定します。 samesiteこのパラメーターは、Cookie の SameSite 属性を指定します。つまり、Cookie が同じサイト内でのみ使用できるかどうかを指定します。

セッションと Cookie の選択

セッションと Cookie を使用する場合は、特定のアプリケーション シナリオに基づいて適切なテクノロジを選択する必要があります。一般に、大量のデータを保存する必要がある場合、またはデータのセキュリティを確保する必要がある場合は、セッション テクノロジーを使用する必要があり、少量のデータを保存する必要がある場合、またはクライアント間でデータを共有する必要がある場合は、Cookie テクノロジーを使用する必要があります。

さらに、Session と Cookie の両方にセキュリティ上のリスクがあることにも注意してください。セッションや Cookie が悪意のある攻撃者によって傍受されると、ユーザーのデータが漏洩します。したがって、セッションと Cookie を使用する場合は、HTTPS プロトコルを使用してデータを送信する、Cookie の HttpOnly 属性を設定するなど、特定のアプリケーション シナリオに基づいて適切なセキュリティ対策を選択する必要があります。

以上がPythonでセッションとCookieを扱う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート