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之后保存

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

      

     

  • 相关阅读:
    hdu 2222 Keywords Search
    Meet and Greet
    hdu 4673
    hdu 4768
    hdu 4747 Mex
    uva 1513 Movie collection
    uva 12299 RMQ with Shifts
    uva 11732 strcmp() Anyone?
    uva 1401
    hdu 1251 统计难题
  • 原文地址:https://www.cnblogs.com/SunsetSunrise/p/7702190.html
Copyright © 2011-2022 走看看