91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Flask中的Cookie和Session代表什么

發布時間:2020-08-26 15:28:12 來源:億速云 閱讀:157 作者:Leah 欄目:編程語言

Flask中的Cookie和Session代表什么?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

cookie:在網站中,http請求是無狀態的。也就是說即使第一次和服務器連接后并且登錄成功后,第二次請求服務器依然不能知道當前請求是哪個用戶。cookie的出現就是為了解決這個問題,第一次登錄后服務器返回一些數據(cookie)給瀏覽器,然后瀏覽器保存在本地,當該用戶發送第二次請求的時候,就會把上次請求存儲的cookie數據自動的攜帶給服務器,服務器通過瀏覽器攜帶的數據就能判斷當前是哪個用戶了。cookie存儲的數據量有限,不同的瀏覽器有不同的存儲大小,但一般不超過4kb。因此使用cookie只能存儲一些小量的數據。

session:session和cookie的作用有點類似,都是為了存儲用戶相關的信息。不同的是,cookie是存儲在本地瀏覽器,而session存儲在服務器。存儲在服務器的數據會更加安全,不容易被竊取。但存儲在服務器也有一定的弊端,就是會占用服務器的資源,但現在服務器已經發展至今,存儲一些session信息還是綽綽有余的。

cookie和session結合使用:cookie和session的使用已經出現了一些非常成熟的方案。一般有兩種存儲方式:

(1)存儲在服務端:通過cookie存儲一個session_id,然后具體的數據則保存在session中。如果用戶已經登錄,則服務器會在cookie中保存一個session_id,下次再請求的時候,會把該session_id攜帶上,服務器根據session_id在sesson庫中獲取用戶的session數據。就能知道該用戶到底是誰,以及之前保存的一些狀態信息。這種專業術語叫做 server side session。

(2)將session數據加密,然后存儲在cookie中。這種專業術語叫做 client side session。flask采用的就是這種方式,但是也可以替換成其它方式。

2.設置cookie

設置cookie:應該在Response的對象上設置。flask.Response對象上有一個set_cookie方法,可以通過這個方法來設置cookie信息。

from flask import Flask,request,Response
app = Flask(__name__)
@app.route('/')
def hello_world():
    resp = Response("服務器返回信息")
    #設置cookie,
    resp.set_cookie('username','derek')
    return resp
if __name__ == '__main__':
    app.run()

參數介紹:源碼

 def set_cookie(self, key, value='', max_age=None, expires=None,
                   path='/', domain=None, secure=False, httponly=False,
                   samesite=None):

key:鍵

value:值

max_age:設置過期時間(秒)

expires:設置過期時間,時間戳的形式(1970離現在的時間)

path:當前主域名

domain:子域名

3.刪除cookie

刪除cookie,通過Response.delete_cookie方法,指定cookie的key,就可以刪除cookie了。

@app.route('/del/')
def delete_cookie():
    resp = Response("刪除cookie")
    #設刪除cookie,
    resp.delete_cookie('username')
    return resp

4.設置cookie過期時間

參數解釋:

(1)max_age:以秒為單位,距離現在多少秒后cookie會過期。

(2)expires:datetime類型,這個時間需要設置為格林尼治時間,也就是要距離北京少8個小時。

(3)如果max_age和expires都設置了,那么這時候以max-age為標準。

(4)如果沒有指定過期時間,則默認為瀏覽器關閉后過期。

代碼如下:

@app.route('/')
def hello_world():
    resp = Response("設置cookie")
    # 1.使用expires參數,就必須使用格林尼治時間
    # 通過expires參數設置有效期的時候,就要相對北京時間少8個小時,所有這里hours是16,
    # 如果直接days=31,就不準確了
    expires = datetime.now() + timedelta(days=30,hours=16)
    resp.set_cookie('username','derek',expires=expires)
    
    # 2.使用max_age參數設置過期時間(1分鐘后后期)
    # resp.set_cookie('username','derek',max_age=60)
    return resp

5. session

flask操作session

設置session:通過flask.session就可操作session了,操作session就跟操作字典是一樣的。session['username'] = 'derek'

獲取session:也是類似字典,session.get('key')

刪除session:session.pop(key),刪除指定的值;session.clear(),刪除session中所有的值

設置session有效期:如果沒有設置session的有效期。那么默認就是瀏覽器關閉后過期。如果設置session.parmanent=True,那么就會默認31天后過期。如果不想在31天后過期,那么可以設置app.config['PERMANENT_SESSION_LIFETIME']= timedelta(hour=2),可以指定多久后過期(比如:2小時)。

代碼如下:

from flask import Flask,session
import os
from datetime import timedelta
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)
#自定義設置session的有效期
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(hours=2)
@app.route('/')
def index():
    # 設置session
    session['username'] = 'derek'
    # permanent:過期時間,默認為false,如果設置為True,則默認為31天之后過期
    # 可以通過app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(hours=2)
    # 來自定義過期時間,這樣設置后,session.permanent = True的session有效期則為兩個小時
    session.permanent = True
    return 'Hello World!'
@app.route('/get_session/')
def get_session():
    #獲取session
    username = session.get('username')    # derek
    return username
@app.route('/delete_session/')
def delete_session():
    #刪除session
    session.pop('username')    #刪除指定的session
    # session.clear()          #刪除所有session
    return '刪除成功'
if __name__ == '__main__':
    app.run(debug=True)

關于Flask中的Cookie和Session代表什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嘉定区| 鲁山县| 张家港市| 通榆县| 拜城县| 东乌珠穆沁旗| 石屏县| 六枝特区| 吴桥县| 米泉市| 南澳县| 文山县| 长岭县| 定西市| 怀集县| 乌兰浩特市| 林甸县| 宕昌县| 东乌珠穆沁旗| 柏乡县| 安阳市| 昭觉县| 连云港市| 郸城县| 白银市| 余姚市| 嘉祥县| 格尔木市| 庄河市| 正蓝旗| 建昌县| 文山县| 永平县| 疏勒县| 安塞县| 刚察县| 景泰县| 五华县| 瑞昌市| 开化县| 延长县|