Django4.0 使用會話-配置

2022-03-16 18:01 更新

一些可以用來控制會話行為的 Django settings :

  • ?SESSION_CACHE_ALIAS?:默認(rèn)為default?如果你使用的是 基于緩存的會話存儲,這將選擇要使用的緩存。
  • ?SESSION_COOKIE_AGE?:默認(rèn)為 1209600 (2 周,以秒為單位)。會話 cookie 的壽命,以秒為單位。
  • ?SESSION_COOKIE_DOMAIN?:默認(rèn)為 ?None?用于會話 cookie 的域。將其設(shè)置為一個字符串,如 "example.com",用于跨域 cookie,或使用 ?None ?用于標(biāo)準(zhǔn)域 cookie。要使用帶有 ?CSRF_USE_SESSIONS ?的跨域 cookie,你必須包括一個前導(dǎo)點(diǎn)(例如 ".example.com"),以適應(yīng) ?CSRF? 中間件的引用檢查。在生產(chǎn)型網(wǎng)站上更新此配置時要謹(jǐn)慎。如果你更新此配置,在以前使用標(biāo)準(zhǔn)域 cookie 的網(wǎng)站上啟用跨域 cookie,現(xiàn)有用戶 cookie 將被設(shè)置為舊域。這可能導(dǎo)致他們無法登錄,只要這些 cookie 持續(xù)存在。這個配置也會影響到 ?django.contrib.messages? 所設(shè)置的 cookies。
  • ?SESSION_COOKIE_HTTPONLY?:默認(rèn)為 ?True?是否對會話 cookie 使用 ?HttpOnly ?標(biāo)志。如果設(shè)置為 True,客戶端的 JavaScript 將無法訪問會話 cookie。HttpOnly ?是包含在 ?Set-Cookie HTTP? 響應(yīng)頭中的一個標(biāo)志。它是 RFC 6265#section-4.1.2.6 標(biāo)準(zhǔn)中 Cookie 的一部分,可以作為一種有用的方式來降低客戶端腳本訪問受保護(hù) Cookie 數(shù)據(jù)的風(fēng)險。這使得攻擊者將跨站腳本漏洞升級為完全劫持用戶的會話變得不那么簡單。關(guān)閉這個功能的理由不多。你的代碼不應(yīng)該從 JavaScript 中讀取會話 cookies。
  • ?SESSION_COOKIE_NAME?:默認(rèn)為 ?sessionid?用于會話的 cookie 的名稱。這可以是任何你想要的(只要它與你的應(yīng)用程序中的其他 cookie 名稱不同)。
  • ?SESSION_COOKIE_PATH?:默認(rèn)為 ?/?會話 cookie 上設(shè)置的路徑。這個路徑應(yīng)該與你的 Django 安裝的 URL 路徑相匹配,或者是該路徑的父路徑。如果你有多個 Django 實(shí)例在同一個主機(jī)名下運(yùn)行,這個功能很有用。他們可以使用不同的 cookie 路徑,而且每個實(shí)例只能看到自己的會話 cookie。
  • ?SESSION_COOKIE_SAMESITE?:默認(rèn)為 ?Lax?會話 cookie 上的 SameSite 標(biāo)志的值。這個標(biāo)志可以防止 cookie 在跨站請求中被發(fā)送,從而防止 CSRF 攻擊,使一些竊取會話 cookie 的方法變得不可能。
    該配置的可能值為:
    ?Strict?:防止瀏覽器在所有跨站點(diǎn)瀏覽的情況下向目標(biāo)站點(diǎn)發(fā)送 cookie,即使在使用常規(guī)鏈接時也是如此。例如,對于類似 GitHub 的網(wǎng)站來說,這意味著如果登錄的用戶通過企業(yè)論壇或電子郵件鏈接到 GitHub 的私人項(xiàng)目,GitHub 將不會收到會話 cookie,用戶將無法訪問該項(xiàng)目。然而,銀行網(wǎng)站很可能不允許從外部網(wǎng)站鏈接任何交易頁面,因此?Strict?標(biāo)志將是合適的。
    ?Lax?(默認(rèn)):為希望在用戶從外部鏈接到達(dá)后保持用戶登錄會話的網(wǎng)站提供安全和可用性之間的平衡。在 GitHub 的場景下,當(dāng)跟隨外部網(wǎng)站的常規(guī)鏈接時,會話 cookie 將被允許,而在 CSRF 傾向的請求方法(例如 POST)中被阻止。
    ?None?(字符串):會話 cookie 將隨所有同站和跨站請求發(fā)送。
    ?False ?:停用該標(biāo)志。
  • ?SESSION_COOKIE_SECURE?:默認(rèn)為?False?。如果設(shè)置為 ?True?,cookie 將被標(biāo)記為“安全”,這意味著瀏覽器可以確保 cookie 只在 HTTPS 連接下發(fā)送。關(guān)閉這個配置并不是一個好主意,因?yàn)楣粽呖梢杂脭?shù)據(jù)包嗅探器捕獲一個未加密的會話 cookie,并使用 cookie 來劫持用戶的會話
  • ?SESSION_ENGINE?:默認(rèn)為 ?django.contrib.sessions.backends.db???刂?Django 存儲會話數(shù)據(jù)的地方。
  • ?SESSION_EXPIRE_AT_BROWSER_CLOSE?:默認(rèn)為?False?。是否在用戶關(guān)閉瀏覽器時結(jié)束會話。
  • ?SESSION_FILE_PATH?:默認(rèn)為?None?。如果你使用的是基于文件的會話存儲,那么這個選項(xiàng)設(shè)置了 Django 存儲會話數(shù)據(jù)的目錄,當(dāng)使用默認(rèn)值(None)時,Django 將使用系統(tǒng)的標(biāo)準(zhǔn)臨時目錄。
  • ?SESSION_SAVE_EVERY_REQUEST?:默認(rèn)為?False?。如果這個配置是 ?False ?(默認(rèn)),那么會話數(shù)據(jù)只有在被修改時才會被保存,也就是說,如果它的任何字典值被分配或刪除,那么會話數(shù)據(jù)就會被保存。即使這個配置是活動的,也不會創(chuàng)建空會話。
  • ?SESSION_SERIALIZER?:默認(rèn)為 ?django.contrib.sessions.serializers.JSONSerializer?。用于序列化會話數(shù)據(jù)的序列化器類的完整導(dǎo)入路徑。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號