【python】cookie和session实现状态保持(django中)
生活随笔
收集整理的這篇文章主要介紹了
【python】cookie和session实现状态保持(django中)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、什么是狀態保持?!
所謂的狀態保持就是,服務端存儲用戶身份信息;
所謂的身份認證就是,服務端依據狀態保持信息,認證出用戶身份;
二、實現狀態保持的方案
Cookie和Session的相同點:(1)、狀態保持;(2)、緩存數據
1、使用Cookie實現狀態保持
2、使用Session機制實現狀態保持
業務:需要做保持登錄狀態/狀態保持功能.
保持登錄狀態可以使用 cookie 或 session 來實現
但是 cookie 不安全, 所以我們使用 session 保存.
django 中有提供 session 來狀態保持的方法: login( )
login( ) 方法實現狀態保持方式:
- 把用戶信息保存至 session
- 把 session 的 sessionid 存放至 cookie
- 把 cookie 放到響應中. 會隨著響應返回給前端瀏覽器
login() 使用方式:
# 導入: from django.contrib.auth import login # 調用: login(request, user)三、查看狀態保持結果
1. cookie 中有 sessionid 的值:(以下為舉例)
2. cookie所在位置
3. session所在位置
4. session 的值也保存到了 redis 中(以下僅為示例):
- 由以上圖片內容, 可知:
- login( ) 幫助我們把 user 的信息寫入到 session 中去了
- 而且也幫助我們把 sessionid 保存到了 cookie 中
- 所以我們可以在 cookie 中獲取 sessionid
- 也可以在 redis 中查看 session 的保存情況
四、django中配置redis
1. 安裝 django-redis 擴展包
pip install django-redis- django-redis官方中文文檔
2. 配置redis數據庫
CACHES = {# 默認存儲信息: 存到 0 號庫"default": { "BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://127.0.0.1:6379/0","OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",}},# session 信息: 存到 1 號庫"session": { "BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://127.0.0.1:6379/1","OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",}}, } SESSION_ENGINE = "django.contrib.sessions.backends.cache" SESSION_CACHE_ALIAS = "session"default:
- 默認的 Redis 配置項,采用 0 號 Redis 庫
session:
- 狀態保持的 Redis 配置項,采用 1 號 Redis 庫。
SESSION_ENGINE:
- 修改 session 存儲機制使用 Redis 保存。
SESSION_CACHE_ALIAS:
- 使用名為"session"的Redis配置項存儲session數據。
總結
以上是生活随笔為你收集整理的【python】cookie和session实现状态保持(django中)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搭建ftp服务器根目录文件夹,ftp服务
- 下一篇: websocket python爬虫_p