04.Django實現完整登入系統的兩種方法(cookie and session)
一:將登入時的使用者資訊寫入cookie
###############################################################
#一、存取Cookies
# 1、設定Cookies
# response.set_cookie("cookie_key","value")
# 2、獲取Cookies
# value = request.COOKIES["cookie_key"]
# 3、刪除Cookies
# response.delete_cookie("cookie_key",path="/",domain=name)
# 4、檢測Cookies
# if "cookie_name" is request.COOKIES :
# 5、response.set_cookie() 傳遞一些可選的引數 描述
# 引數 預設值 描述
# max_age None cookies的持續有效時間(以秒計),如果設定為 None cookies 在瀏覽器關閉的時候就失效了。
# expires None cookies的過期時間,格式: "Wdy, DD-Mth-YY HH:MM:SS GMT" 如果設定這個引數,
# 它將覆蓋 max_age 引數。
# path "/" cookie生效的路徑字首,瀏覽器只會把cookie回傳給帶有該路徑的頁面,這樣你可以避免將
# cookie傳給站點中的其他的應用。
# 當你的應用不處於站點頂層的時候,這個引數會非常有用。
# domain None cookie生效的站點。你可用這個引數來構造一個跨站cookie。如, domain=".example.com"
# 所構造的cookie對下面這些站點都是可讀的: www.example.com 、 www2.example.com 和
# an.other.sub.domain.example.com 。
# 如果該引數設定為 None ,cookie只能由設定它的站點讀取。
# secure False 如果設定為 True ,瀏覽器將通過HTTPS來回傳cookie。
#二、Cookies規則
# 1、Cookies是以字典方式儲存,(Key—>Value的鍵值對方式儲存),訪問是隻要訪問Session的鍵就可以得到鍵對應的Value
# 如果:value = response.set_cookie("cookie_key","value")
# 2、儲存到客戶端
# 優點:
# 資料存在在客戶端,減輕伺服器端的壓力,提高網站的效能。
# 缺點:
# 1、安全性不高:在客戶端機很容易被檢視或破解使用者回話資訊
##################################################################
def
login(request):
m
=
Member.objects.get(username
=
request.POST[
'username'
])
if
m.password
=
=
request.POST[
'password'
]:
else
:
return
HttpResponse(
"Your username and password didn't match."
)
def
logout(request):
#清理cookie
response.delete_cookie('name')
return
HttpResponse(
"You're logged out."
)
二:將登陸時的使用者資訊寫入session表
####################################################################################
# 一、開始Sessions功能: --正常情況下,你無需任何設定就可以使用session功能。如果你刪除或修改過請檢測一下配置
# 1、編輯settings.py中 MIDDLEWARE_CLASSES 配置, 確保 'django.contrib.sessions.middleware.SessionMiddleware'存在,如果沒有則新增。
# 2、編輯settings.py中INSTALLED_APPS 配置,確保'django.contrib.sessions' (如果你是剛開啟這個應用,別忘了執行 manage.py syncdb )
#
#二、怎麼使用:
# 1、設定Sessions值
# request.session['session_name'] ="admin"
# 2、獲取Sessions值
# session_name = request.session["session_name"]
# 3、刪除Sessions值
# del request.session["session_name"]
# 4、檢測是否操作session值
# if "session_name" is request.session :
#三、sessions規則:
# 1、session是以字典方式儲存,(Key—>Value的鍵值對方式儲存),訪問是隻要訪問Session的鍵就可以得到鍵對應的Value
# 如果:value = request.session["key_name"]
# 2、Session字典中以下劃線開頭的key值是Django內部保留key值。框架只會用很少的幾個下劃線開頭的session變數,
# 除非你知道他們的具體含義,而且願意跟上Django的變化,否則,最好不要用這些下劃線開頭的變數,它們會讓D
# jango攪亂你的應用。
# 3、不要用一個新物件來替換掉 request.session ,也不要存取其屬性、
# 4、Session儲存在伺服器端,
# 優點:資料儲存相對比較安全,資料交換方便。
# 缺點:如果儲存資料多,訪問量大時,比較消耗伺服器端資源,導致網站整體效能下降。
####################################################################################
一個簡化的登陸認證:
def login(request): m = Member.objects.get(username = request.POST[ 'username' ]) if m.password = = request.POST[ 'password' ]: request.session[ 'member_id' ] = m. id return HttpResponse( "You're logged in." ) else : return HttpResponse( "Your username and password didn't match." ) def logout(request): try : del request.session[ 'member_id' ] except KeyError: pass return HttpResponse( "You're logged out." )
|
相關文章
- 短影片商城系統,session和cookie實現登入SessionCookie
- Laravel 通過 cookie 實現基於 session 的單點登入LaravelCookieSession
- Cookie和Session的區別,Koa2+Mysql+Redis實現登入邏輯CookieSessionMySqlRedis
- Cookie&Session,登入的那些小事兒~CookieSession
- Java Servlet session實現登入退出JavaServletSession
- Selenium使用Cookie實現自動登入Cookie
- 基於 Session 實現簡訊登入Session
- PHP實現Google Oauth的登入系統PHPGoOAuth
- 爬取githubs——登入後的東西(兩種方法)Github
- 淺談 Cookie-Session 、Jwt 兩種身份認證機制CookieSessionJWT
- Servlet+Session+Cookie登入、校驗、退出的邏輯程式碼ServletSessionCookie
- 實現登入態的幾種方式
- express+vue+mongodb+session 實現註冊登入ExpressVueMongoDBSession
- Springboot中登入後關於cookie和session攔截案例Spring BootCookieSession
- 非同步系統的兩種測試方法非同步
- 分散式系統Session 實現方式分散式Session
- mmall_v2.0 Redis + Cookie 實現單點登入RedisCookie
- 單點登入的三種實現方式
- 系統多種使用者角色認證登入授權如何實現?
- 跨域分散式系統單點登入的實現(CAS單點登入)跨域分散式
- 許可權處理 - 用redis實現分散式session~ (cookie && session )Redis分散式SessionCookie
- 建立Session物件的兩種方式Session物件
- 系統登入認證流程對比(cookie方式與jwt)CookieJWT
- 爬蟲 | 處理cookie的基本方法——session爬蟲CookieSession
- cookie與session的區別以及在Django中的實現CookieSessionDjango
- uniapp 完成兩種方式登入 驗證碼登入 密碼登入APP密碼
- vue實現單點登入的N種方式Vue
- 兩種方法使vue實現jQuery呼叫VuejQuery
- RabbitMQ實現延時訊息的兩種方法MQ
- cookie sessionCookieSession
- cookie & sessionCookieSession
- vnc批次登入,2種VNC批次登入Linux的方法VNCLinux
- Cookie、Session、JWT在koa中的應用及實現原理CookieSessionJWT
- 不同團隊如何實現登入系統 (just for fun)
- 兩臺伺服器實現免密登入伺服器
- 小程式各種姿勢實現登入
- Golang兩種方法實現MD5加密Golang加密
- 操作教程|在 MeterSphere 中透過 SSH 登入伺服器的兩種方法伺服器
- cookie與session的使用CookieSession