cookies和session
生活随笔
收集整理的這篇文章主要介紹了
cookies和session
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基于cookies做用戶驗證時,敏感信息不適合放在cookies中
cookies保存在客戶瀏覽器端的鍵值對
session保存在服務器端的鍵值對(依賴于cookies),把用戶瀏覽器中的cookies中信息
session =
{
生成隨機字符串1>{‘login’:True,'user’:root.......},
生成隨機字符串2>{..............}
}
cookies中session的使用
1 def index(request): 2 # 獲取、設置、刪除Session中數據 3 request.session['k1'] 4 request.session.get('k1',None) 5 request.session['k1'] = 123 6 request.session.setdefault('k1',123) # 存在則不設置 7 del request.session['k1'] 8 9 # 所有 鍵、值、鍵值對 10 request.session.keys() 11 request.session.values() 12 request.session.items() 13 request.session.iterkeys() 14 request.session.itervalues() 15 request.session.iteritems() 16 17 18 # 用戶session的隨機字符串 19 request.session.session_key 20 21 # 將所有Session失效日期小于當前日期的數據刪除 22 request.session.clear_expired() 23 24 # 檢查 用戶session的隨機字符串 在數據庫中是否 25 request.session.exists("session_key") 26 27 # 刪除當前用戶的所有Session數據 28 request.session.delete("session_key")?
?基于cookies的session用戶驗證登錄
1 from django.shortcuts import render, HttpResponse, redirect 2 3 4 # Create your views here. 5 def login(request): 6 if request.method == 'GET': 7 return render(request, 'login.html') 8 elif request.method == 'POST': 9 user = request.POST.get('user') 10 pwd = request.POST.get('pwd') 11 if user == 'root' and pwd == '123': 12 # 生成隨機字符串。 13 # 寫到用戶瀏覽器cookies中 14 # 保存到服務器端的session 15 # 在隨機字符串的字典中設置相關的內容 16 request.session['username'] = user # 基于session中設置值 17 request.session['is_login'] = True 18 return redirect('/index/') 19 else: 20 return render(request, 'login.html') 21 22 def index(request): 23 # 獲取當前用戶的隨機字符串 24 # 根據隨機字符串獲取對應信息 25 if request.session['is_login']: 26 # return HttpResponse('ok') 27 return HttpResponse(request.session['username']) # 基于session中獲取值 28 else: 29 return HttpResponse('請登錄') View Code登錄注銷
1 """untitled4 URL Configuration 2 3 The `urlpatterns` list routes URLs to views. For more information please see: 4 https://docs.djangoproject.com/en/1.10/topics/http/urls/ 5 Examples: 6 Function views 7 1. Add an import: from my_app import views 8 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') 9 Class-based views 10 1. Add an import: from other_app.views import Home 11 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') 12 Including another URLconf 13 1. Import the include() function: from django.conf.urls import url, include 14 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) 15 """ 16 from django.conf.urls import url 17 from django.contrib import admin 18 from app1 import views 19 20 urlpatterns = [ 21 url(r'^admin/', admin.site.urls), 22 url(r'^login/$', views.login), 23 url(r'^index/$', views.index), 24 url(r'^loginout/$', views.loginout), 25 ] url 1 from django.shortcuts import render, HttpResponse, redirect 2 3 4 # Create your views here. 5 def login(request): 6 if request.method == 'GET': 7 return render(request, 'login.html') 8 elif request.method == 'POST': 9 user = request.POST.get('user') 10 pwd = request.POST.get('pwd') 11 if user == 'root' and pwd == '123': 12 # 生成隨機字符串。 13 # 寫到用戶瀏覽器cookies中 14 # 保存到服務器端的session 15 # 在隨機字符串的字典中設置相關的內容 16 request.session['username'] = user # 基于session中設置值 17 request.session['is_login'] = True 18 return redirect('/index/') 19 else: 20 return render(request, 'login.html') 21 22 23 def index(request): 24 # 獲取當前用戶的隨機字符串 25 # 根據隨機字符串獲取對應信息 26 if request.session.get('is_login', None): 27 # return HttpResponse('ok') 28 return render(request, 'index.html') 29 else: 30 return HttpResponse('請登錄') 31 32 33 def loginout(request): 34 request.session.clear() 35 return redirect('/login/') Views 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <h1>{{ request.session.username }}</h1> 9 <a href="/loginout/">注銷</a> 10 </body> 11 </html> indexhtml 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <form action="/login/" method="post"> 9 <input type="text" name="user" placeholder="user"/> 10 <input type="password" name="pwd" placeholder="pwd"/> 11 <input type="submit" value="提交"/> 12 </form> 13 </body> 14 </html> login修改默認超時時間:
修改默認超時時間---在settings里面做修改。
每次用戶發來請求的時候,都需要更新一下超時時間。超時時間的起點應該是每次用戶操作完開始計算,而不應該是第一次登錄的時間點為起點,將如下代碼在settings中設置為True,則可設置瀏覽器超時時間的起點應該是每次用戶操作完開始計算。
?
1 SESSION_SAVE_EVERY_REQUEST = False # 是否每次請求都保存Session,默認修改之后才保存(默認)。最后一次操作10秒后再失效。?
session的基本操作
. Django中默認支持Session,其內部提供了5種類型的Session供開發者使用:
- 數據庫(默認) #把session存在數據庫中
- 緩存
- 文件
- 緩存+數據庫
- 加密cookie
方式一:
數據庫(默認) #把session存在數據庫中
Django默認支持Session,并且默認是將Session數據存儲在數據庫中,即:django_session 表中。 1 SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 引擎(默認)方式二:
把session存在緩存中
1 SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 引擎方式三:
把session存在文件中
1 SESSION_ENGINE = 'django.contrib.sessions.backends.file' # 引擎 2 SESSION_FILE_PATH = None # 緩存文件路徑,如果為None,則使用tempfile模塊獲取一個臨時地址tempfile.gettempdir() # 如:/var/folders/d3/j9tj0gz93dg06bmwxmhh6_xm0000gn/T 3方式三:
緩存+數據庫
數據庫用于做持久化,緩存用于提高效率;先去數據庫中找,找到的話,直接用;
找不到的話,到數據庫中去找,然后再在緩存中放一份。
1 SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' # 引擎
方式四:
加密cookies
1 SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies' # 引擎?
?
??
?
?轉載于:https://www.cnblogs.com/cerofang/p/8414115.html
總結
以上是生活随笔為你收集整理的cookies和session的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对高并发流量控制的一点思考推荐
- 下一篇: 企业级 SpringBoot 教程 (十