中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

無錫網(wǎng)站優(yōu)化價格福鼎網(wǎng)站優(yōu)化公司

無錫網(wǎng)站優(yōu)化價格,福鼎網(wǎng)站優(yōu)化公司,醫(yī)院網(wǎng)站建設要素,wordpress評論特效Cookie簡介 Cookie,有時也用Cookies,是指web程序為了辨別用戶身份、進行 session 跟蹤而儲存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密),一般是以鍵值對的形式存在,Cookie具有不可跨域名性 Cookie是http協(xié)議中…

Cookie簡介

Cookie,有時也用Cookies,是指web程序為了辨別用戶身份、進行 session 跟蹤而儲存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密),一般是以鍵值對的形式存在,Cookie具有不可跨域名性

Cookie是http協(xié)議中定義在 header 中的字段

Cookie解決無狀態(tài)問題原理

客戶端訪問服務端,服務端生成一個有限時間的cookie給客戶端,cookie保存在客戶端本地瀏覽器,下次進行訪問的時候,客戶端就會攜帶cookie訪問服務端,服務端可以通過cookie辨別客戶端用戶


Cookie的使用

from django.shortcuts import render
from django.http import HttpResponse# Create your views here.# 體驗了一下報錯:The view createCookie_app.views.cookie_index didn't return an HttpResponse object. It returned None instead.
def cookie_index(request):return HttpResponse("設置cookie").set_cookie('name', 'root')# 先用這種
def cookie_index1(request):resp = HttpResponse("設置cookie")resp.set_cookie('name', 'root')return respdef cookie_get(request):print(request.COOKIES)return HttpResponse('獲取cookie:%s' % request.COOKIES['name'])

Cookie的免登錄設置

from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render, redirect# Create your views here.
from django.urls import reversedef login(request):return render(request, 'login/login.html')def do_login(request):resp = HttpResponse()# 獲取請求體數(shù)據(jù)data = request.POSTusername = data['uname']password = data['pwd']try:rember = data['rember']except:rember = '0'print('username:', username)print('password:', password)if username == 'django' and password == '123':resp.content = '登錄成功'if rember == 'rember':print('設置cookie')# 設置cookieresp.set_cookie('uname', username, max_age=60*60*24*3)resp.set_cookie('pwd', password, max_age=60*60*24*3)else:# 刪除cookieresp.delete_cookie('uname')resp.delete_cookie('pwd')return respelse:return HttpResponseRedirect(reverse('login'), {'msg': '用戶名或密碼錯誤'})
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><h1>登錄頁面</h1>{% csrf_token %}<form action="/do_login/" method="post">{% csrf_token %}用戶名:<input type="text" name="uname" ><br>密碼:<input type="password" name="pwd" ><br>記住我<input type="checkbox" name="rember" value="rember"><br><input type="submit" value="登錄"><br></form>
</body>
</html>
from django.urls import path
from .views import *urlpatterns = [path('login/', login, name='login'),path('do_login/', do_login, name='logout')
]

Session介紹

Session 對象存儲特定用戶會話所需的屬性及配置信息。當用戶在應用程序的 Web 頁之間跳轉時,存儲在 Session 對象中的變量將不會丟失,而且在整個用戶會話中一直存在下去。(session是依賴于cookie的)

Django框架中的session管理允許存儲和檢索任意數(shù)據(jù),它在服務器端存儲數(shù)據(jù)并抽象cookie的發(fā)送和接收。

啟用session

要應用session,必須開啟session中間層,在settings.py中:

MIDDLEWARE = [# 啟用 Session 中間層'django.contrib.sessions.middleware.SessionMiddleware',
]
五種session的引擎

Django中默認支持Session,其內部提供了5種類型供開發(fā)者使用:

  • 數(shù)據(jù)庫
  • 緩存
  • 緩存+數(shù)據(jù)庫
  • 文件
  • Cookie

五種方式的啟動配置各異,但是啟動完成后,在程序中的使用方式都相同:

數(shù)據(jù)庫方式

SESSION_ENGINE = 'django.contrib.sessions.backends.db'  
# 數(shù)據(jù)庫類型的session引擎需要開啟此應用,啟用 sessions 應用
INSTALLED_APPS = ['django.contrib.sessions',
]

緩存

速度最快,但是由于數(shù)據(jù)是保存在內存中,所以不是持久性的,服務器重啟或者內存滿了就會丟失數(shù)據(jù)

SESSION_ENGINE = 'django.contrib.sessions.backends.cache' 

緩存+數(shù)據(jù)庫

速度次于單純緩存方式,但是實現(xiàn)了持久性,每次寫入高速緩存也將寫入數(shù)據(jù)庫,并且如果數(shù)據(jù)尚未存在于緩存中,則使用數(shù)據(jù)庫

SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'  

一般用以上三種,另外兩種少用,cookie不推薦使用

文件

SESSION_ENGINE = 'django.contrib.sessions.backends.file' 
# 設置文件位置, 默認是 tempfile.gettempdir(),
# linux下是:/tmp
# windows下是: C:\Users\51508\AppData\Local\Temp
SESSION_FILE_PATH = 'd:\session_dir'

加密cookie

基于cookie的session,所有數(shù)據(jù)都保存在cookie中,一般情況下不建議使用這種方式

  1. cookie有長度限制,4096個字節(jié)
  2. cookie不會因為服務端的注銷而無效,那么可能造成攻擊者使用已經(jīng)登出的cookie模仿用戶繼續(xù)訪問網(wǎng)站
  3. SECRET_KEY這個配置項絕對不能泄露,否則會讓攻擊者可以遠程執(zhí)行任意代碼
  4. cookie過大,會影響用戶訪問速度
SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'

?Session的設置

django默認就會配置數(shù)據(jù)庫存儲session的設置,所以使用默認設置的時候需要配置好數(shù)據(jù)庫信息

進行數(shù)據(jù)庫的同步。數(shù)據(jù)庫同步后會發(fā)現(xiàn)數(shù)據(jù)庫中有一個django-session的表

之后進行設置的session將會存儲在這張表內

創(chuàng)建與獲取session

session = request.session# 配置session的時間
session.set_expiry(秒)# 設置session
session['uname'] = 'xxx'# 獲取sessionuname = session.get('uname')

刪除session

# 刪除某個key
del request.session['has_commented']
# 從會話中刪除當前會話數(shù)據(jù)并刪除會話cookie
flush()
# 設置會話的到期時間
# 如果value是整數(shù),則session將在多少秒不活動后到期
# 如果value是一個datetime或timedelta,該session將在相應的日期/時間到期
# 如果value是0,用戶的會話cookie將在用戶的Web瀏覽器關閉時到期
# 如果value是None,則會話將恢復為使用全局會話到期策略
set_expiry(value)


其他session方法

# 設置測試cookie以確定用戶的瀏覽器是否支持cookie
set_test_cookie()
# 返回True或者False,取決于用戶的瀏覽器是否接受測試cookie
test_cookie_worked()
# 刪除測試cookie
delete_test_cookie()
# 返回此會話到期之前的秒數(shù)
# kwargs 為 `modification` 和 `expiry`,一般不指定
# modification:最后一次訪問日期,默認當前時間, now
# expiry: 到期剩余秒數(shù),默認全局配置時間
get_expiry_age(**kwargs)
# 返回此會話將過期的日期
# 參數(shù)同 get_expiry_age
get_expiry_date(**kwargs)
# 返回True或者False,取決于用戶的Web瀏覽器關閉時用戶的會話cookie是否會過期
get_expire_at_browser_close()
# 從會話存儲中刪除過期的會話,這是個類方法。
clear_expired()
# 在保留當前會話數(shù)據(jù)的同時創(chuàng)建新的會話密鑰
cycle_key()
?

session的settings.py使用

# Session的cookie保存在瀏覽器上時的key,即:sessionid=隨機字符串(默認)
SESSION_COOKIE_NAME = "sessionid"?
# Session的cookie保存的路徑(默認)
SESSION_COOKIE_PATH = "/"?
# Session的cookie保存的域名(默認)
SESSION_COOKIE_DOMAIN = None
# 是否Https傳輸cookie(默認)
SESSION_COOKIE_SECURE = False
# 是否Session的cookie只支持http傳輸(默認)
SESSION_COOKIE_HTTPONLY = True
# Session的cookie失效日期(2周)(默認)
SESSION_COOKIE_AGE = 1209600
# 是否關閉瀏覽器使得Session過期(默認)
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
# 是否每次請求都保存Session,默認修改之后才保存(默認)
SESSION_SAVE_EVERY_REQUEST = False ?


session登錄

使用了admin的后臺管理系統(tǒng)

  • 用django后臺管理的用戶登錄驗證

  • 實現(xiàn)登錄功能

    • django.contrib.auth

      • authenticate():?https://docs.djangoproject.com/zh-hans/4.1/topics/auth/default/#authenticating-users
      • login():?使用 Django 的驗證系統(tǒng) | Django 文檔 | Django
  • 實現(xiàn)退出用戶功能

    • logout():?使用 Django 的驗證系統(tǒng) | Django 文檔 | Django
  • 沒登錄自動跳登錄頁面

    • django.contrib.auth.decorators.login_required實現(xiàn)
    • login_required() :使用 Django 的驗證系統(tǒng) | Django 文檔 | Django

views.py

重定向還有模板jinja2語法好重要喲

from django.contrib import auth
from django.contrib.auth import authenticate, login
from django.shortcuts import render, redirect
from django.views import View
from django.urls import reverse
from django.http import HttpResponseRedirect
# Create your views here.class m_login(View):def get(self, request):error_message = request.session.get('login_err')request.session['login_err'] = Nonereturn render(request, 'login.html', {'login_err':error_message})def post(self, request):username = request.POST.get('uname')password = request.POST.get('pwd')print(username)print(password)user = auth.authenticate(username=username, password=password)if user:login(request, user)  # login() 會在 session 中保存用戶的ID。return render(request, 'index.html', {'name': username})# return render(request, 'index.html', {'name': username})else:request.session['login_err'] = '用戶名或密碼錯誤!'return redirect('session:login')def index(request):# 判斷用戶是否登錄# 沒有登錄return HttpResponseRedirect(reverse('session:login'))

session登出

# 判斷用戶是否登錄,# 沒有登錄,則跳轉到登錄頁面
@login_required(login_url='session:login')
def index(request):# 有登錄正常返回首頁return HttpResponseRedirect(reverse('session:index'))# 退出登錄
def logout(request):auth.logout(request)  # 清除session中的用戶信息return HttpResponseRedirect(reverse('session:login'))

http://m.risenshineclean.com/news/41153.html

相關文章:

  • 廈門網(wǎng)站建設xm37網(wǎng)站的營銷推廣
  • 靜態(tài)網(wǎng)站建設課程設計百度一下生活更好
  • 網(wǎng)站404怎么做搜索排名提升
  • 網(wǎng)站怎么做直通車鄭州厲害的seo優(yōu)化顧問
  • 做攻略的網(wǎng)站好企業(yè)中層管理人員培訓課程
  • 廣州網(wǎng)站排名優(yōu)化費用招聘網(wǎng)絡營銷推廣人員
  • wordpress各部分功能百度seo關鍵詞優(yōu)化費用
  • 自己做網(wǎng)站自己做推廣教程視頻教程網(wǎng)絡運營培訓
  • 水果b2b電商平臺有哪些seo技術員
  • 蘇州營銷型網(wǎng)站南寧企業(yè)官網(wǎng)seo
  • 上海做網(wǎng)站比較有名的公司湖南疫情最新消息今天
  • 我網(wǎng)站關鍵詞太多公司做網(wǎng)站推廣
  • 東莞市網(wǎng)站開發(fā)市場調研報告怎么寫范文
  • 攜程旅游網(wǎng)站建設的定位廣點通廣告平臺
  • 網(wǎng)站建設了解一下圖片蘇州seo報價
  • 開了網(wǎng)站建設公司 如何接業(yè)務蘇州seo怎么做
  • 網(wǎng)站建設 php 企業(yè)網(wǎng)站重慶seo招聘
  • 網(wǎng)站建設與維護方式石家莊最新新聞事件
  • 群暉wordpress內外網(wǎng)訪問網(wǎng)站整站優(yōu)化推廣方案
  • 網(wǎng)站建設畢業(yè)設計說明書word文檔關鍵詞優(yōu)化建議
  • 如何建立自己的企業(yè)網(wǎng)站網(wǎng)時代教育培訓機構官網(wǎng)
  • 做土司的網(wǎng)站bt磁力貓
  • 陜西網(wǎng)站制作定制疫情最新官方消息
  • 域名注冊好后怎么建設網(wǎng)站今日剛剛發(fā)生的軍事新聞
  • 網(wǎng)站后臺怎么做alt標簽淄博seo培訓
  • 鄭州華久做網(wǎng)站農村電商平臺有哪些
  • 做外國網(wǎng)站用什么服務器注冊網(wǎng)站需要多少錢
  • 網(wǎng)站設計介紹免費seo
  • 中英網(wǎng)站建立百度關鍵詞排名用什么軟件
  • 網(wǎng)站續(xù)費怎么做分錄百度搜一下