• 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加入进去返回给浏览器。




  • 相关阅读:
    JS判断是PC端还是移动端
    js对象转数组
    js获取当前域名、Url、相对路径和参数以及指定参数
    javascript返回上一页的三种写法
    js正则归纳总结
    higtcharts 生成图表个数问题
    js如何处理后台传递过来的Map
    jQuey实现鼠标滑过整行变色
    <display:column>常用属性解释
    <display:table>常用属性解释
  • 原文地址:https://www.cnblogs.com/jabbok/p/10321397.html
Copyright © 2020-2023  润新知