Django中的session常见配置

Django - session

  • request.session
  • session 适合存放 和用户相关的数据
  • session 存放的数据必须能被 json 序列化
  • session 是一个类似于字典的容器
  • session 的默认存活时间默认是2周

Session 的工作原理

当用户使用 session的时候, 服务器 会 从 浏览器的 Cookie 中查找一个 cookie 的 name = sessionid
如果 能够找到 对应的 cookie , 则获取 sessionid 对应的 value, 通过 value 在服务器获取 session
如果 没有找到对应的 cookie , 服务器会创建一个新的 session对象,并将 session对象的 ID 作为 value,
将 sessionid 作为 name, 写入到 浏览器的 cookie 中

session 常见的配置


# 设置浏览器cookie 对应的 key
SESSION_COOKIE_NAME = 'sessionid'

# 设置session的默认存活时间
SESSION_COOKIE_AGE = 60 * 60 * 24 * 7 * 2

# 设置从项目根下获取 Cookie
SESSION_COOKIE_PATH = "/"

# 设置 session是否随浏览器的关闭而消亡
SESSION_EXPIRE_AT_BROWSER_CLOSE= False

# 设置 session数据的序列化器类
SESSION_SERIALIZER = django.contrib.sessions.serializers.JSONSerializer

session 中常见的方法

  • session 存储
session[key] = val

session.setdefault(key, val)

  • session 消亡
session.flush()
  • 设置session存活时间

session.set_expiry(val)

val 如果是一个数字,则代表 剩余多少秒消亡

val 是一个日期,则到日期时间点 消亡

  • 清除过期的 session
session.clear_expired()

session 相关的表 django-session

session_key : session的ID

session_data : session序列化的数据

expire_data : session的过期时间

django 用户登录

  • authenticate(request, username, password) : 会验证用户名、密码,如果正确,返回 user对象

  • login(request, user) : user 就是 authenticate 返回的认证后的 user 对象

  • logout(request) : 退出登录

判断用户是否登录

request.user.is_anonymous 判断当前用户是否是匿名用户

猜你喜欢

转载自blog.csdn.net/qq_40679091/article/details/109148088