day21-session介绍和原理

一、session介绍

  我们知道,之前我们是用cookie做用户验证的,但是这样不安全,为啥说不安全呐?因为基于cookie做用户验证的时候,敏感信息不适合放在cookie中,不然会很容易拿着你的信息去干很多坏事的。所以我们这边要用session,那session是什么鬼呐?

  1. cookie 是保存在用户浏览器端的键值对
  2. session 是保存在服务器端的键值对

  session = {

    随机字符串:

     用户信息

  }

  所以,session其实就是一个大的字典,用户来了之后,在本地生成一个随机字符串,这个随机字符串作为key,用户信息作为value,当然这个数据也会在数据库存一份

二、session原理图

 

三、session设置

3.1、url的设置

说明:首先我们跟往常一样,添加函数login和index的url

from django.urls import path
from app01 import views

urlpatterns = [
    path('login/', views.login),
    path('index/', views.index),
]

3.2、view.py的代码

说明:编写login和index的函数

from django.shortcuts import render,redirect,HttpResponse

def login(request):
    if request.method == "GET":
        return render(request,'login.html')
    elif request.method == "POST":
        user = request.POST.get('user')
        pwd = request.POST.get('pwd')
        if user == 'root' and pwd == "123":
            #生成随机字符串
            # 写到用户浏览器cookie
            # 保存到session
            # 在随机字符串对应的字典中设置相关内容...
            request.session['username'] = user #以上4步,django一次帮你做完
            request.session['is_login'] = True
            return redirect('/index/')
        else:
            return render(request,'login.html')

def index(request):
    #获取当前用户的随机字符串
    #根据随机字符串获取对应的信息
    if request.session["is_login"]:
        return HttpResponse(request.session['username'])
    else:
        return HttpResponse('滚')

3.3、templates的login.html

<body>
    <form method="post" action="/login/">
        <input type="text" name="user" placeholder="用户名">
        <input type="password" name="pwd" placeholder="密码">
        <input type="submit" value="登录">
    </form>
</body>

四、查看session信息

4.1、客户端

说明:登录完成之后在本地cookie中记录你的session的key值,这个可以值就是session的django内部生成的随机字符串。

4.2、服务端session值

说明:在保存session的时候是记录你的数据库的,所以在登录之前一定要执行数据库初始化操作即:

D:\PycharmProjects\51home\sday21>python manage.py makemigrations

D:\PycharmProjects\51home\sday21>python manage.py migrate

session在数据 django_session的数据表中:

session_data的数据时保存在username = root和is_login=True的一次加密。

 

posted @ 2018-04-09 13:53  帅丶高高  阅读(213)  评论(0编辑  收藏  举报