zoukankan      html  css  js  c++  java
  • Django之session

    1.session是个啥?

      和cookie的本质区别是:cookie是保存在客户端的键值对,而session是保存在服务器端的键值对。

      而基于Cookie做用户验证时并不适合将敏感信息放在cookie中。

    2.session工作原理:

      以登录为例

      当用户认证成功后,服务器端会生成一段随机字符串,然后将这段字符串保存在客户端cookie中,在服务器端以键值对的形式同样保存这段随机字符串,

      {"随机字符串":{相关信息}} 

    3.简单实例:

    views: 

     1 user_info={
     2     'user1':{'pwd':'123'},
     3     'user2':{'pwd':'321'},
     4 }
     5 def login(request):
     6     if request.method=='GET':
     7         return render(request,'login.html')
     8     if request.method=='POST':
     9         u=request.POST.get('user')
    10         p=request.POST.get('pwd')
    11         dic=user_info.get(u)
    12         if dic and dic['pwd']==p:
    13             request.session['username']=u
    14             request.session['is_login']=True
    15             return redirect('/index/')
    16         else:
    17             return render(request, 'login.html')
    18 def index(request):
    19     if request.session('islogin',None):   #request.session 拿到了随机字符串,
    20                                           #根据字符串在拿到相关信息
    21         return HttpResponse('ok')
    22     else:
    23         return HttpResponse('invalid')

     HTML:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Login</title>
     6 </head>
     7 <body>
     8     <div>
     9         <form action="/login/" method="POST">
    10             <input name="user" type="text" placeholder="用户名"/>
    11             <input name="pwd" type="password" placeholder="密码"/>
    12             <input type="submit" value="登录"/>
    13         </form>
    14         {{ error_msg }}
    15     </div>
    16 </body>
    17 </html>
    View Code
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>index</title>
     6 </head>
     7 <body>
     8     {{ username }}
     9 </body>
    10 </html>
    View Code

      在写好配置后,还有一步关键步骤:

      在Terminal里:

    1 python manage.py makemigrations
    2 python manage.py migrate

    在chorm里可以查看到:

     4.session的配置操作:

    1 SESSION_COOKIE_NAME='sessionid'                #session的cookie保存在浏览器上的key,即:session=随机字符串
    2 SESSION_COOKIE_PATH='/'                        #session的cookie保存路径
    3 SESSION_COOKIE_DOMAIN=None                     #session的cookie保存域名
    4 SESSION_COOKIE_SECURE=False                    #是否Https传输cookie
    5 SESSION_COOKIE_HTTPONLY=True                   #是否只支持http传输
    6 SESSION_COOKIE_AGE=1209600                     #session的cookie失效日期(默认两周)
    7 SESSION_COOKIE_AT_BROWER_CLOSE=False           #关闭浏览器session的cookie是否失效
    8 SESSION_COOKIE_SAVE_EVERY_REQUEST=False        #是否每次请求都保存session,修改默认值为True之后保存

    以上配置的值均为默认值。

      

     

  • 相关阅读:
    JS函数的定义与调用方法
    一次完整的浏览器请求流程
    【前端安全】JavaScript防http劫持与XSS
    深入理解display属性
    前端开发人员需要了解的CSS原理
    第 10 章 文件系统及实现
    第 9 章 虚拟内存管理
    第 8 章 内存管理策略
    第 7 章 死锁
    第 6 章 同步
  • 原文地址:https://www.cnblogs.com/SunsetSunrise/p/7702190.html
Copyright © 2011-2022 走看看