Galleta y sesión de operación de Django

Todos sabemos que el protocolo HTTP no tiene estado.

medios sin estado son independientes para cada solicitud. Su ejecución y los resultados de las solicitudes anteriores y las solicitudes posteriores no están directamente relacionados, no está limitada por la respuesta de solicitud anterior afectar directamente, que no afecta directamente la respuesta de la última petición.

Una palabra interesante para describir la vida es sólo como huelga, para el servidor, cada solicitud es nueva.

datos de estado pueden ser entendidas como un cliente y el servidor creado en un determinado período de sesiones, y que ningún estado a pensar que estos datos no se conservarán. Los datos de sesión generados es que necesitamos ser salvados, que es el de "espera". Así Cookies nace bajo este escenario.

Y hay un problema, que visita mi sitio, no puedo determinar que no se desembarcan. Antes de aprender Django, aunque escrito muchas páginas, pero el usuario no puede ver todas las páginas de aterrizaje son, siempre y cuando se conozca la URL en la línea. Pero estamos a favor de su propia seguridad, nosotros verificamos. ¿Qué URL de acceso, debe verificar la identidad del usuario. Pero después de que el usuario cierra la sesión, sino también para asegurar que los usuarios aterrizado no es necesario repetir la página de destino será capaz de acceder a otras direcciones URL en mi sitio. Pero sin estado HTTP ah, cómo asegurar que esta cosa? En este momento estamos buscando una cookie.

En primer lugar habla, Cookie es una tecnología de navegador. Cookies refiere específicamente a se un poco de información, que es el servidor envía un paquete de claves almacenadas en el navegador, se puede entender como el servidor al cliente un pequeño postre, la próxima vez que acceda al buscador de servidores llevará automáticamente estos pares de valores clave para el servidor para extraer información útil.

principio de funcionamiento cookie es: un navegador para acceder al servidor, con una cookie de vacío, y luego generar el contenido del servidor, el navegador recibe la correspondiente guardar localmente. Cuando el acceso del navegador, el navegador mostrará automáticamente la cookie, por lo que el servidor puede ser juzgado por el contenido de este Cookie "que" era.

Http características del protocolo

  • Ningún estado, ninguna conexión (HTTP versión 1.1 apareció conexiones cortas)
  • línea de solicitud - un encabezado de solicitud - línea vacía - datos de la solicitud: Formato

Obtener Cookie:

request.COOKIES.get('xx')

Obtener la firma de la galleta (no se utiliza):

request.get_signed_cookie('is_login',salt='xxxxxx')

Conjunto de cookies:

HttpResponse('xx').set_cookie('键','值')

Conjunto de firmas Cookie (no se utiliza):

ret.set_signed_cookie('is_login',True,'xxxxxx')

tiempo de espera de cookies y establece la fecha de caducidad:

ret.set_cookie('is_login', True, max_age=5)    # 超时时间 秒数
ret.set_cookie('is_login', True, expires=datetime.datetime.now() + datetime.timedelta(days=7))    #过期日期

Eliminar cookies:

ret.delete_cookie('xxoo')

ventaja sesión

  1. Por medio de una galleta de transmisión
  2. No representada en texto plano
  3. cualquier longitud
  4. Django proporciona una forma muy fácil de usar interfaz de sesión que sólo necesita unos pocos comandos simples se pueden lograr establecimiento de la sesión, la adquisición y se vacían.

set session

request.session['xx'] = 'oo'

Conjunto de comandos de sesión implica tres pasos:

  1. Generar una cadena aleatoria
  2. Cookies para la transmisión en
  3. Guardar la cadena aleatoria y sus datos a la base de datos del servidor correspondiente, Django-sesión de mesa

Obtiene Sesión

request.session.get('xx') -- 'oo'

Este es un comando simple, de hecho, implica la sesión de adquisición sobre tres pasos, es decir, el establecimiento de la sesión el proceso inverso:

# 1 取出cookie中的session随机字符串{'sessionid':'asdfasfpoaijsdgihsdj'}
xx = request.COOKIES.get('sessionid')
# 2 到数据库中查询这个sessionid对应的那条记录
data = select session_data from django_session where session_key = xx;
# 3 拿出记录中的session_data数据部分进行解密,并取出数据
dic = sss(data) -- {'is_login':True}
dic.get('is_login') -- True

sesión de cierre de sesión

def logout(request):
    request.session.flush()  # 删除session
    return redirect('login')

session.flush() El comando de sesión se cancela, dos pasos principales:

  1. la eliminación de cookies de pares de valores clave que sessionid
  2. Eliminar este registro en la base de datos

Galleta:

  • Mantener la sesión, el usuario no necesita conectarse repetidamente en
  • Hay límites de tamaño
  • Hay una serie de restricciones
  • El tamaño máximo total de 4 KB de la galleta
  • Un servidor de ahorrar hasta un 20 Galleta en el navegador del cliente
  • Un navegador guardar hasta 300 Galleta, debido a que un navegador puede acceder a múltiples servidores

sesión:

  • Cookie en la superficie de lo más seguro
  • límite de tamaño ninguna sesión
  • Puede ser configurado para almacenar una pluralidad de programas pueden ser configurados en la memoria caché

Supongo que te gusta

Origin www.cnblogs.com/shuoliuchina/p/12521594.html
Recomendado
Clasificación