Session知识点

时间:2022-03-03 03:57:52

知识点概要
    - Session
    - CSRF
    - Model操作
    - Form验证(ModelForm)
    - 中间件
    - 缓存
    - 信号

内容详细:

1. Session
    基于Cookie做用户验证时:敏感信息不适合放在cookie中

a. Session原理
        Cookie是保存在用户浏览器端的键值对
        Session是保存在服务器端的键值对
    
    b. Cookie和Session对比
    
    c. Session配置(缺少cache)
    
    d. 示例:实现两周自动登陆
            - request.session.set_expiry(60*10)
            - SESSION_SAVE_EVERY_REQUEST = True

PS: cookie中不设置超时时间,则表示关闭浏览器自动清除
    
    
    - session依赖于cookie
    - 服务器session
        request.session.get()
        request.session[x] = x
        
        request.session.clear()
        
    - 配置文件中设置默认操作(通用配置):
        SESSION_COOKIE_NAME = "sessionid"                       # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认)
        SESSION_COOKIE_PATH = "/"                               # Session的cookie保存的路径(默认)
        SESSION_COOKIE_DOMAIN = None                             # Session的cookie保存的域名(默认)
        SESSION_COOKIE_SECURE = False                            # 是否Https传输cookie(默认)
        SESSION_COOKIE_HTTPONLY = True                           # 是否Session的cookie只支持http传输(默认)
        SESSION_COOKIE_AGE = 1209600                             # Session的cookie失效日期(2周)(默认)
        SESSION_EXPIRE_AT_BROWSER_CLOSE = False                  # 是否关闭浏览器使得Session过期(默认)
        # set_cookie('k',123)
        SESSION_SAVE_EVERY_REQUEST = False                       # 是否每次请求都保存Session,默认修改之后才保存(默认)

- 引擎的配置

2. CSRF
    a. CSRF原理

b. 无CSRF时存在隐患

c. Form提交(CSRF)

d. Ajax提交(CSRF)
       CSRF请求头 X-CSRFToken
       
       
6. 中间件

7. 缓存
    5种配置
    3种应用:
        全局
        视图函数
        模板

8. 信号
    - 内置信号
    - 自定义
         - 定义信号
         - 出发信号
         - 信号中注册函数
    
3. Model操作
    
    a. 字段类型 + 参数

b. 连表字段 + 参数

c. Meta

d. SQL操作:
        - 基本增删改查
        - 进阶操作
        - 正反查询
        - 其他操作

e. 验证(弱)

4. Form操作
    完成:
        - 验证用户请求
        - 生成HTML
          (保留上一次提交的数据)
        
    自定义:
        - 类
        - 字段(校验)
        - 插件(生成HTML)
        
    初始化操作: