" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python Flask前端自動(dòng)登錄功能實(shí)現(xiàn)詳解

 更新時(shí)間:2022年10月25日 16:37:33   作者:LinTa0  
這篇文章主要介紹了Python Flask前端自動(dòng)登錄功能實(shí)現(xiàn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

引言

在已有的網(wǎng)站中,幾乎所有的網(wǎng)站都已經(jīng)實(shí)現(xiàn)了 自動(dòng)登錄

所謂自動(dòng)登錄,其實(shí)就是在你登錄后,然后關(guān)閉瀏覽器,接著再啟動(dòng)瀏覽器重新進(jìn)入剛剛的網(wǎng)站時(shí),無需自己再次登錄。更準(zhǔn)確的說,在一段時(shí)間內(nèi),無需自己再次登錄

思路:其實(shí)所謂的自動(dòng)登錄,到最后的后端邏輯,和你正常的登錄邏輯是一樣的,也是判斷用戶名和密碼是否正確。只是我們要省略讓用戶再次輸入用戶名和密碼的步驟,那么肯定就要將用戶名和密碼存儲(chǔ)在一個(gè)地方。當(dāng)檢測(cè)到用戶再次進(jìn)入時(shí),看看是否滿足可以自動(dòng)登錄的條件,滿足的話,將保存的用戶名和密碼取出來,幫用戶自動(dòng)登錄。那我們就要去想,將用戶名和密碼存儲(chǔ)到什么地方

在本篇文章中,本人會(huì)在 Flask 項(xiàng)目中使用 ** session + cookie** 的方式,實(shí)現(xiàn)上述的功能

實(shí)現(xiàn)的方式有很多種,下面的只是其中一種,大家可以自己的需求進(jìn)行改造和拓展

1. 登錄時(shí)

登錄,前端傳來用戶名和密碼,然后去后端進(jìn)行驗(yàn)證。如果用戶名和密碼都正確,則正常登錄

此時(shí),我們需要把用戶名、密碼存進(jìn) cookie 中,然后在 session 存儲(chǔ)一個(gè)是否已經(jīng)登錄的標(biāo)識(shí)

重要的話說三次:

存儲(chǔ)密碼時(shí),記得加密!

存儲(chǔ)密碼時(shí),記得加密!

存儲(chǔ)密碼時(shí),記得加密!

參考代碼如下

from flask import make_response, session, request
@user.route('/login', methods=['POST'])
def login():
	username = request.form.get('username').strip()
    password = request.form.get('password').strip()
    ......  //  自己的邏輯處理
    if 登錄成功:
        session['islogin'] = 'true'  //  是否已經(jīng)登錄的標(biāo)識(shí)
        session['username'] = username  //  根據(jù)自己的需求,在session里存儲(chǔ)一些值
        # 將Cookie寫入瀏覽器
        response = make_response('login-pass')  //  登錄成功,返回給前端的值
        response.set_cookie('username', username, max_age=30*24*3600)  //  max_age,cookie的存活時(shí)間,這里表示一個(gè)月
        response.set_cookie('password', password, max_age=30*24*3600)
        return response
    else:
        return 'login-fail'  //  登錄失敗,返回給前端的值

2. 定義全局?jǐn)r截器

這個(gè)時(shí)候,可能會(huì)有人有疑問,為什么要使用攔截器?

試想:進(jìn)入一個(gè)網(wǎng)站有多個(gè)入口,你知道用戶會(huì)以哪個(gè)入口來訪問你的網(wǎng)站嗎?那我們總不能每一個(gè)進(jìn)入網(wǎng)站的接口都去寫一份自動(dòng)登錄的邏輯代碼吧。所以我們可以直接使用攔截器,將所有的請(qǐng)求都攔截起來,進(jìn)行統(tǒng)一的處理。然后將靜態(tài)的資源和不用進(jìn)行自動(dòng)登錄邏輯處理的請(qǐng)求過濾掉即可

在程序的主入口 main.py 定義一個(gè)攔截器

# 定義全局?jǐn)r截器,實(shí)現(xiàn)自動(dòng)登錄
@app.before_request
def before():
    url = request.path
    pass_list = ['/user', '/login', 'logout']  //  不用進(jìn)行自動(dòng)登錄邏輯判斷的請(qǐng)求
    if url in pass_list or url.endswith('.js') or url.endswith('.jpg'):
        pass  //  過濾不用進(jìn)行自動(dòng)登錄邏輯處理的請(qǐng)求和靜態(tài)的資源
    else:
        if session.get('islogin') is None:
            username = request.cookies.get('username')
            password = request.cookies.get('password')
            if username != None and password != None:
                ......  //  自己的邏輯處理
                if 登錄成功:
        			session['islogin'] = 'true'  //  是否已經(jīng)登錄的標(biāo)識(shí)
        			session['username'] = username  //  根據(jù)自己的需求,在session里存儲(chǔ)一些值

3. 退出登錄時(shí)

退出登錄時(shí),清空 session 和 cookie

from flask import make_response, session, request, url_for
@user.route('/logout')
def logout():
    # 清空session和Cookie,頁(yè)面跳轉(zhuǎn)
    session.clear()
    response = make_response('注銷并進(jìn)行重定向', 302)  # 302狀態(tài)碼表示重定向
    # 兩種重定向的方法
    # response.headers['Location'] = '/'
    response.headers['Location'] = url_for('index.home')  # 另一種方式,括號(hào)里的值寫請(qǐng)求為“/” 的 - Blueprint名.方法名
    # 兩種清除cookie的方式
    response.delete_cookie('username')
    response.set_cookie('password', '', max_age=0)
    return response

上面第二種重定向方式中,所對(duì)應(yīng)的值

index = Blueprint("index", __name__)
@index.route('/')
def home():
    ......  //  自己的邏輯處理

到此這篇關(guān)于Python Flask前端自動(dòng)登錄功能實(shí)現(xiàn)詳解的文章就介紹到這了,更多相關(guān)Python Flask自動(dòng)登錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python多線程抓取天涯帖子內(nèi)容示例

    python多線程抓取天涯帖子內(nèi)容示例

    這篇文章主要介紹了python多線程抓取天涯帖子內(nèi)容示例,需要的朋友可以參考下
    2014-04-04
  • python打印日志方法的使用教程(logging模塊)

    python打印日志方法的使用教程(logging模塊)

    Python標(biāo)準(zhǔn)庫(kù)自帶日志模塊logging,logging中涉及到4個(gè)核心組件,這些組件構(gòu)建了logging體系,下面這篇文章主要給大家介紹了關(guān)于python打印日志方法的使用教程,需要的朋友可以參考下
    2022-06-06
  • Python轉(zhuǎn)換itertools.chain對(duì)象為數(shù)組的方法

    Python轉(zhuǎn)換itertools.chain對(duì)象為數(shù)組的方法

    這篇文章主要介紹了Python轉(zhuǎn)換itertools.chain對(duì)象為數(shù)組的方法,通過代碼給大家介紹了itertools 的 chain() 方法,需要的朋友可以參考下
    2020-02-02
  • python里 super類的工作原理詳解

    python里 super類的工作原理詳解

    這篇文章主要介紹了python里 super類的工作原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python request中文亂碼問題解決方案

    Python request中文亂碼問題解決方案

    這篇文章主要介紹了Python request中文亂碼問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Python中的各個(gè)多線程模塊之間的區(qū)別解析

    Python中的各個(gè)多線程模塊之間的區(qū)別解析

    Python中涉及多線程的主要模塊包括threading、thread和concurrent.futures,現(xiàn)代Python編程推薦使用threading和concurrent.futures,以提供更高層次的抽象和可用性,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • Python實(shí)現(xiàn)的彈球小游戲示例

    Python實(shí)現(xiàn)的彈球小游戲示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的彈球小游戲,可實(shí)現(xiàn)類似乒乓球游戲的鍵盤控制底部擋板移動(dòng)碰撞小球的游戲功能,需要的朋友可以參考下
    2017-08-08
  • python中的map函數(shù)語(yǔ)法詳解

    python中的map函數(shù)語(yǔ)法詳解

    map是python內(nèi)置函數(shù),會(huì)根據(jù)提供的函數(shù)對(duì)指定的序列做映射,這篇文章主要介紹了python中的map函數(shù)語(yǔ)法詳解,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • python使用thrift教程的方法示例

    python使用thrift教程的方法示例

    這篇文章主要介紹了python使用thrift教程的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Pyhton中單行和多行注釋的使用方法及規(guī)范

    Pyhton中單行和多行注釋的使用方法及規(guī)范

    大家都知道python中的注釋有多種,有單行注釋,多行注釋,批量注釋,中文注釋也是常用的。python注釋也有自己的規(guī)范,這篇文章文章中會(huì)給大家詳細(xì)介紹Pyhton中單行和多行注釋的使用方法及規(guī)范,有需要朋友們可以參考借鑒。
    2016-10-10

最新評(píng)論

桦川县| 郁南县| 虹口区| 麻栗坡县| 肇东市| 锡林郭勒盟| 霍邱县| 石棉县| 石门县| 友谊县| 平遥县| 日喀则市| 仪征市| 手游| 洪洞县| 平谷区| 小金县| 苏州市| 长武县| 桂林市| 汉沽区| 恩平市| 长春市| 喜德县| 嘉义市| 布拖县| 乐亭县| 怀宁县| 建平县| 喜德县| 乃东县| 九江县| 台前县| 黑水县| 普兰县| 邹平县| 湘潭县| 宜川县| 威信县| 清河县| 星座|