Uso simple de sesión y cookie en Django

1. Comprensión simple

Sesión y cookie son dos objetos que se solicitan, manipular sus valores es manipular el diccionario y establecer sus propiedades es llamar a métodos.

El seguimiento de sesiones es una tecnología de uso común en los programas web para realizar un seguimiento de toda la sesión del usuario. Las aplicaciones web utilizan el protocolo HTTP para transferir datos. El protocolo HTTP es un protocolo sin estado. Una vez que se completa el intercambio de datos, la conexión entre el cliente y el servidor se cerrará y se debe establecer una nueva conexión para intercambiar datos nuevamente. Esto significa que el servidor no puede rastrear la sesión desde la conexión. Para resolver este problema, las tecnologías de seguimiento de sesiones más utilizadas son Cookie y Session. Cookie determina la identidad del usuario registrando información en el lado del cliente, y Session determina la identidad del usuario registrando información en el lado del servidor.

Para usar la sesión en Django, primero debe ejecutar (el proceso de creación de una tabla):
python manage.py makemigrations
python manage.py migrate

Inserte la descripción de la imagen aquí

二 、 sesión :

* Mecanismo de almacenamiento de sesión :
(1) cuando el usuario visita el servidor, el servidor genera una cadena aleatoria;
(2) cuando el usuario inicia sesión correctamente, {sessionID: cadena aleatoria} se organiza en pares clave-valor y se agrega a la cookie Se envió al usuario;
(3), el servidor al cliente se envía una cadena aleatoria en la cookie para hacer la clave, la información del usuario para hacer que el valor almacenado la información del usuario;

Por lo tanto, el formato de la sesión almacenada por el servidor debe ser:
{sessionid: {'username': xx, 'password': yy}}
request.session ['username'] = 'xx'
genera un sessionid aleatorio por defecto, e implica la contraseña SessionID encuentra el paso de información del usuario;

1. Establecer valor (diccionario):

request.session['username'] = 'Genius淼'
request.session['password'] = 'genius123'

request.session.setdefault('username','password')#username 默认值为'password'

2. Establecer atributos :

request.session.set_expiry(value) -- 设置session过期时间,默认是两周。

value:
- 数字(单位:秒)
- datatime(具体日期)
- None(依据全局失效策略)
- timedelta(时间增量)
注意:request.session.set_expiry(timedelta(days=30))时要在setting中添加:SESSION_SERIALIZER='django.contrib.sessions.serializers.PickleSerializer'

3. Ver

request.session.keys()  
request.session.values() 
request.session.items()	

4. Obtener

request.session["username"] 		 #  以字典形式读取,键不存在会报错
request.session.get("username")		 #  以get方法形式读取,键不存在会报错
request.session.get("username",None) #  加参,如果username不存在则读取到None
request.session.session_key		     # 用户session的随机字符串

5. Eliminar

del request.session["username"]		# 以字典形式删除
request.session.delete("username")	# 以方法形式删除
request.session.delete('session_key') #删除所有session
request.session.clear()				# 删除所有session
request.session.clear_expired()		# 删除已失效session
Configurar sesión en configuración (transferencia)

Ubicación de almacenamiento de la sesión:
base de datos (predeterminada) SESSION_ENGINE = 'sdjango.contrib.sessions.backends.db'
cache SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
archivo SESSION_ENGINE = 'django.contrib.sessions.backends.file'
cache + Base de datos SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
cookie encriptada (equivalente a no usar sesión y guardar información confidencial para el cliente) SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'

#sessionConfiguration FileSESSION_ENGINE
= 'django.contrib.sessions.backends.db' # Motor (predeterminado)

SESSION_FILE_PATH = ruta del archivo # ruta del archivo de caché, si es Ninguna, use el módulo tempfile para obtener una dirección temporal tempfile.gettempdir ()

SESSION_COOKIE_NAME = "sessionid" # La clave cuando la cookie de sesión se guarda en el navegador, a saber: sessionid = cadena aleatoria (predeterminado)

SESSION_COOKIE_PATH = "/" # Ruta de almacenamiento de cookies de sesión (predeterminado)

SESSION_COOKIE_DOMAIN = Ninguno # El nombre de dominio guardado por la cookie de sesión (predeterminado)

SESSION_COOKIE_SECURE = False # Si Https transmite cookies (predeterminado)

SESSION_COOKIE_HTTPONLY = True # Si la cookie de sesión solo admite la transmisión http (predeterminado)

SESSION_COOKIE_AGE = 1209600 # Fecha de vencimiento de la cookie de sesión (2 semanas) (predeterminado)

SESSION_EXPIRE_AT_BROWSER_CLOSE = False # Si cerrar el navegador para que la sesión caduque (predeterminado)

SESSION_SAVE_EVERY_REQUEST = False # Si desea guardar la sesión para cada solicitud, guarde la sesión después de la modificación predeterminada (predeterminado)


Tres, galleta:

En django, la cookie se establece mediante el método set_cookie después de que se declara una HttpResponse. Guarda cookies en el cliente del navegador configurando pares clave-valor en el encabezado de respuesta Set-Cookie.

res = HttpResponse()		# 具体是什么响应要看自己的return

  • Establecer valor (diccionario):

     res.set_cookie('username','password')
     res.set_cookie('Genius淼','genius123')
    
  • Obtener

      username = request.COOKIES.get('username')
    
  • Eliminar

      res.delete_cookie('username')
    
  • Establecer propiedades :
    ver la clase HttpResponseBase:

    def set_cookie(self, key, value='', max_age=None, expires=None, path='/',
           				domain=None, secure=False, httponly=False):
                   	 ......
    

    Parámetros pasables :
    clave : el nombre de la cookie
    valor : el valor de la cookie
    max_age : tiempo de caducidad, unidad-segundo. El valor predeterminado es -1 ——> número negativo: cerrar el navegador no es válido, 0 significa eliminar la cookie.
    expires : fecha de vencimiento, lo mismo que la sesión set_expiry
    ruta : la ruta de uso de la cookie, '/' significa que todas están permitidas. '/ index /' solo se puede acceder desde / index, preste atención al último /
    domain : el nombre de dominio que puede acceder a la cookie, comenzando con '.', como '.baidu.com'
    seguro : si la cookie solo se usa Transmisión de protocolo seguro, el valor predeterminado es Falso. Cuando se usa https, seguro debe configurarse como True
    httponly : está restringido para obtener pares clave-valor en la consola del navegador, pero la herramienta de captura de paquetes no se puede restringir.

    举例 : res.set_cookie ("edad", "10", edad_máxima = "10", expira = "2019-01-31",)


  • Valor de configuración de cifrado : res.set_signed_cookie ('age', '10', salt = "I'm secript")
    Valor: request.get_signed_cookie ('age', salt = "I'm secript") es
    como agregar un cifrado adicional

Referencia de sesión y cookies

Supongo que te gusta

Origin blog.csdn.net/GeniusXYT/article/details/103096307
Recomendado
Clasificación