Maison > développement back-end > Tutoriel Python > Comment gérer la session et les cookies en Python

Comment gérer la session et les cookies en Python

王林
Libérer: 2023-05-10 11:19:12
avant
948 Les gens l'ont consulté

Session et Cookie

Dans le développement Web, Session et Cookie sont deux technologies courantes utilisées pour transférer des données entre le client et le serveur. Session est une technologie côté serveur qui enregistre les données utilisateur côté serveur, tandis que Cookie est une technologie côté client qui enregistre les données utilisateur dans le navigateur.

Utilisation de la session

Session est une technologie qui enregistre les données des utilisateurs côté serveur. Dans Django, la session est implémentée via SessionMiddleware, qui lit les données de session de l'utilisateur depuis le stockage avant de traiter chaque requête et les enregistre dans l'attribut request .session, afin que la fonction d'affichage puisse accéder aux données de session. SessionMiddleware来实现的,该中间件会在每个请求处理之前将用户的Session数据从存储中读取出来,并将其保存在request.session属性中,这样视图函数就可以访问Session数据了。

激活SessionMiddleware

要使用Session,需要在Django项目的配置文件中激活SessionMiddleware,这样Django就会自动为每个请求创建一个Session对象。在MIDDLEWARE中添加django.contrib.sessions.middleware.SessionMiddleware即可激活SessionMiddleware

MIDDLEWARE = [
    # ...
    'django.contrib.sessions.middleware.SessionMiddleware',
    # ...
]
Copier après la connexion

Session的配置

Django的Session有多种存储方式,包括数据库、缓存、文件系统等。在Django的配置文件中,可以通过SESSION_ENGINE来指定Session的存储方式,通过SESSION_COOKIE_AGE来指定Session的过期时间。

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
SESSION_CACHE_ALIAS = 'default'
SESSION_COOKIE_AGE = 86400
Copier après la connexion

上面的配置表示将Session存储到缓存中,使用默认的缓存,Session的过期时间为1天。

使用Session

在视图函数中使用Session非常简单,只需要访问request.session属性即可。以下是一个使用Session的例子:

def index(request):
    count = request.session.get('count', 0)
    request.session['count'] = count + 1
    return HttpResponse('count: %d' % count)
Copier après la connexion

在上面的例子中,我们访问了request.session属性,并使用get方法获取了名为count的Session数据。如果Session中不存在count数据,get方法将会返回默认值0。然后,我们将count加1并将其保存到Session中。当用户再次访问该视图函数时,我们就可以获取到之前保存的count数据,然后将其加1并更新到Session中。

需要注意的是,Session中保存的数据是有大小限制的。在Django的配置文件中,可以通过SESSION_COOKIE_MAX_SIZE来指定Session的大小限制。如果Session中保存的数据超过了限制,将会引发SuspiciousOperation异常。

Cookie的使用

Cookie是一种在客户端保存用户数据的技术。在Django中,可以使用HttpRequestHttpResponse对象来读写Cookie。

读取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
Copier après la connexion

在上面的例子中,我们访问了request.COOKIES属性,并使用get方法获取了名为count的Cookie。如果Cookie中不存在count数据,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
Copier après la connexion

在上面的例子中,我们创建了一个HttpResponse对象,并使用set_cookie方法将名为name、值为value的Cookie写入响应中。max_age参数指定Cookie的最大寿命,单位为秒。expires参数指定Cookie的过期时间,如果不指定,则表示Cookie在浏览器关闭时过期。path参数指定Cookie的作用路径,即只有在指定路径下的请求才会携带该Cookie。domain参数指定Cookie的作用域,即只有访问指定域名下的请求才会携带该Cookie。secure参数指定Cookie是否只能通过HTTPS协议传输。httponly参数指定Cookie是否只能通过HTTP协议访问,而不能通过JavaScript访问。samesite

Activer SessionMiddleware#🎜🎜##🎜🎜#Pour utiliser Session, vous devez activer SessionMiddleware dans le fichier de configuration du projet Django, afin que Django en crée automatiquement un pour chaque requête Un objet Session. Ajoutez django.contrib.sessions.middleware.SessionMiddleware à MIDDLEWARE pour activer SessionMiddleware. #🎜🎜#rrreee#🎜🎜#Configuration de la session#🎜🎜##🎜🎜#La session de Django dispose d'une variété de méthodes de stockage, notamment des bases de données, des caches, des systèmes de fichiers, etc. Dans le fichier de configuration Django, vous pouvez spécifier la méthode de stockage de la session via SESSION_ENGINE et spécifier le délai d'expiration de la session via SESSION_COOKIE_AGE. #🎜🎜#rrreee#🎜🎜#La configuration ci-dessus indique que la session est stockée dans le cache En utilisant le cache par défaut, le délai d'expiration de la session est de 1 jour. #🎜🎜##🎜🎜#Utiliser Session#🎜🎜##🎜🎜#Utiliser Session dans une fonction d'affichage est très simple, il suffit d'accéder à la propriété request.session. Voici un exemple d'utilisation de Session : #🎜🎜#rrreee#🎜🎜#Dans l'exemple ci-dessus, nous accédons à la propriété request.session et utilisons la méthode get pour obtenir des données de session nommées count. S'il n'y a pas de données count dans la session, la méthode get renverra la valeur par défaut 0. Ensuite, nous incrémentons count de 1 et l'enregistrons dans la session. Lorsque l'utilisateur accède à nouveau à la fonction d'affichage, nous pouvons obtenir les données count précédemment enregistrées, puis y ajouter 1 et les mettre à jour dans la session. #🎜🎜##🎜🎜#Il est à noter que les données enregistrées en Session ont une taille limite. Dans le fichier de configuration Django, vous pouvez spécifier la limite de taille de session via SESSION_COOKIE_MAX_SIZE. Si les données enregistrées dans la session dépassent la limite, une exception SuspiciousOperation sera levée. #🎜🎜##🎜🎜#Utilisation des Cookies#🎜🎜##🎜🎜#Cookie est une technologie qui enregistre les données des utilisateurs côté client. Dans Django, vous pouvez utiliser les objets HttpRequest et HttpResponse pour lire et écrire des cookies. #🎜🎜##🎜🎜#Read Cookie#🎜🎜##🎜🎜#Dans l'objet HttpRequest, vous pouvez accéder à tous les cookies via l'attribut COOKIES. Voici un exemple de lecture de cookies : #🎜🎜#rrreee#🎜🎜#Dans l'exemple ci-dessus, nous accédons à la propriété request.COOKIES et utilisons la méthode get A un cookie nommé count a été obtenu. Si les données count n'existent pas dans le cookie, la méthode get renverra la valeur par défaut 0. Ensuite, nous incrémentons count de 1 et l'enregistrons dans le cookie. Enfin, nous renvoyons un objet HttpResponse et utilisons la méthode set_cookie pour enregistrer le compte mis à jour dans le cookie. #🎜🎜##🎜🎜#Il est à noter que les données stockées dans les cookies ont également des limites de taille. Les limites de taille des cookies peuvent différer selon les navigateurs. Dans Django, vous pouvez spécifier la limite de taille des cookies via SESSION_COOKIE_MAX_SIZE. Si les données stockées dans le cookie dépassent la limite, une exception SuspiciousOperation sera levée. #🎜🎜##🎜🎜#Write Cookie#🎜🎜##🎜🎜#Dans l'objet HttpResponse, vous pouvez utiliser la méthode set_cookie pour écrire un Cookie. Voici un exemple d'écriture dans Cookie : #🎜🎜#rrreee#🎜🎜#Dans l'exemple ci-dessus, nous créons un objet HttpResponse et utilisons la méthode set_cookie pour A un cookie nommé name et une valeur value est écrit dans la réponse. Le paramètre max_age spécifie la durée de vie maximale du cookie, en secondes. Le paramètre expires spécifie le délai d'expiration du cookie. S'il n'est pas spécifié, cela signifie que le cookie expire à la fermeture du navigateur. Le paramètre path spécifie le chemin du cookie, c'est-à-dire que seules les requêtes sous le chemin spécifié porteront le cookie. Le paramètre domain spécifie la portée du cookie, c'est-à-dire que seules les demandes d'accès au nom de domaine spécifié porteront le cookie. Le paramètre secure précise si le cookie peut être transmis uniquement via le protocole HTTPS. Le paramètre httponly précise si le cookie est accessible uniquement via le protocole HTTP et non via JavaScript. Le paramètre samesite spécifie l'attribut SameSite du cookie, qui précise si le cookie ne peut être utilisé qu'au sein du même site. #🎜🎜#

Sélection de Session et Cookie

Lors de l'utilisation de Session et Cookie, vous devez choisir la technologie appropriée en fonction du scénario d'application spécifique. De manière générale, si vous avez besoin de stocker une grande quantité de données ou si vous devez assurer la sécurité des données, vous devez utiliser la technologie Session ; si vous devez stocker une petite quantité de données ou si vous devez partager des données entre clients, vous devez utiliser la technologie Cookie ;

De plus, il convient de noter que la session et les cookies présentent des risques de sécurité. Si la session ou le cookie est intercepté par un attaquant malveillant, les données de l'utilisateur seront divulguées. Par conséquent, lors de l'utilisation de sessions et de cookies, des mesures de sécurité appropriées doivent être sélectionnées en fonction de scénarios d'application spécifiques, tels que l'utilisation du protocole HTTPS pour transmettre des données, la définition de l'attribut HttpOnly des cookies, etc.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal