Session+装饰器 做登陆验证

  1. 设计表结构


    Session+装饰器 做登陆验证_第1张图片
    表结构.png
  2. urls对应关系


    Session+装饰器 做登陆验证_第2张图片
    urls.png
  3. login函数


    Session+装饰器 做登陆验证_第3张图片
    login.png

    3.index函数


    Session+装饰器 做登陆验证_第4张图片
    index.png
  4. 装饰器


    Session+装饰器 做登陆验证_第5张图片
    inner.png
  5. 给需要验证登录的页面加装饰器
@check_login
def index(request):

Session会话

  1. 生成特殊的字符串
  2. 特殊字符串当成key,在数据库的session表中对应一个session_key
  3. 在响应中向浏览器写了一个Cookie Cookie的值就是 特殊的字符串


    Session+装饰器 做登陆验证_第6张图片
    image.png

    这个值保存在客户浏览器上,下次访问服务端就会带上这个值。

服务器拿到Cookie中的sessionid的值,取数据库中查找


Session+装饰器 做登陆验证_第7张图片
数据库中的session.png

找到对应的session_data,将其反序列化解密成一个字典,

# session_data反序列化后成为一个字典
{"is_login": "1", ......, ....., .....#其他数据}

与views.py中login函数中我们设置的 i_login=1 的值对比。通过验证就继续下一步。

  • 设置的is_login的值


    image.png
  • 在装饰器中判断is_login的值


    Session+装饰器 做登陆验证_第8张图片
    image.png

你可能感兴趣的:(Session+装饰器 做登陆验证)