zoukankan      html  css  js  c++  java
  • django_session

    无状态请求

    基于http协议的web应用,是请求-应答模式,这是无状态的。就是说,每次请求都是独立的,它的执行结果和状态和之后的请求是没有直接关系的,不会收到之前请求应答情况的直接影响,也不会影响后面的请求应答情况。

    有状态请求

    比如在浏览博客网,网站可以直接记住用户的登录状态,在无状态下这是无法做到的。在无状态下,服务端不认识客户端。

    服务端要记住客户端,就需要cookie。就是在客户端访问服务端时,服务端给客户端生成一个id来标记它,让后返回给客户端,客户端把这个id存储在本地的cookie里。(这个cookie是在这个服务端的域之下)

    下次客户端请求服务端时,会带着cookie里的id,服务端就会认识,就会把id为1中的信息取出返回。

    如下图,登录成功的博客网,浏览器会在本地的cookie下的该域名下,以键值对的方式存储cookie,下次浏览器再访问博客网,就能用cookie直接登录。

    如果我这时清空cookie,服务端就不认识这个客户端了,刷新就会失去登录状态。

     

    session

    在访问django服务器时,如果要登录,就要给出账户信息,原始的方式就是在cookie里放一个{'username':'xxx','password':'xxx'}的键值对。但这样显然不安全。

    这时就需要sessionid。

     

    在settings中的installed_app中,默认带有'django.contrib.sessions'。

    当做migrate时,django会在db中创建一张表,django_session。

    当有账户登录时,sessions会拦截request,如果带有sessionid,就去表中查找对应的session_key,找到,就解密session_data中的账户信息。

    找不到,则进入登录流程。

    当服务端response时,sessions也会把sessionid加入进去返回给浏览器。




  • 相关阅读:
    Netty实例
    八大排序算法Java实现
    在linux服务器上初步定位java接口耗时
    Manjaro 18.X 配置记录
    Linux下搭建ELK和初步使用
    ubuntu下docker简单安装rabbitmq
    Linux禁启用ping的方法
    ubuntu下docker简单安装mysql
    Ubuntu18优化桌面版的运行速度
    ubuntu下webpack初始化vue项目
  • 原文地址:https://www.cnblogs.com/jabbok/p/10321397.html
Copyright © 2011-2022 走看看