>在本文中,我們將查看Blask-Login提供的各種功能以及如何使用它們為您的Web應用程序創建安全的用戶登錄功能。到本文結尾,您將對如何在燒瓶應用程序中實現安全用戶身份驗證有很好的了解。
>
鑰匙要點 要遵循本文的長期,您需要以下內容: 顯然,您還需要訪問Web瀏覽器。
用燒瓶 - 燃料蛋白:燒瓶 - 燃料蛋白簡化身份驗證,簡化了在燒瓶應用程序中的用戶身份驗證的實現。它提供了必不可少的功能,例如用戶會話管理,輕鬆登錄/註銷功能以及與數據庫無縫集成的用戶加載程序回調。這有助於有效地管理用戶會話並處理身份驗證過程。
>
安全密碼處理和用戶會話管理:我們將使用燒瓶-bcrypt詳細介紹密碼安全性在哈希密碼中,以及Blask-Login如何通過會話cookie管理用戶會話。這樣可以確保用戶憑據被安全存儲並準確跟踪用戶會話,從而增強了應用程序的整體安全性。
>先決條件
入門
為了充分利用燒瓶登錄模塊,我們需要安裝燒瓶login和其他必要的依賴項。這些庫提供了改善應用程序功能所需的必要功能和工具。要安裝它們,請打開命令提示符或終端並執行以下pip命令:pip <span>install flask-login flask_sqlalchemy flask_bcrypt</span>
- >安裝完成後,它將在您使用的目錄中自動下載燒瓶登錄。 >
- 注意:在撰寫本文時,解決最新版本的Blask和Werkzeug中的依賴項存在一個小問題。要解決此問題,您必須強制安裝Werkzeug版本2.3.0版本,因為它是唯一已知的版本。 >安裝了依賴項後,您需要使用燒瓶應用程序初始化它們:
在上面的代碼段中,我們還初始化了應用程序中的LoginManager對象。 LoginManager是燒瓶 - login的擴展,用於設置用於處理用戶會話的必要配置。
創建用戶模型 模型是您要在應用程序中使用的數據結構的表示。它定義瞭如何在系統中組織,存儲和操縱數據。通常,模型與事先遵循定義結構的數據庫一起使用。對於我們的應用程序,我們有以下數據:
>- 唯一的ID
- >用戶名
- >密碼(哈希)
pip <span>install flask-login flask_sqlalchemy flask_bcrypt</span>
>您還可以根據您的項目範圍添加其他屬性,例如電子郵件地址或個人資料圖片。
創建數據庫
>定義用戶模型後,您需要創建一個數據庫,該數據庫將存儲我們在上一個模型中創建的數據結構。 在本文中,我們將使用SQLite數據庫。這是因為SQLITE是輕巧且無服務器的數據庫引擎。這使設置和使用易於使用,因為它不需要單獨的安裝。對於中小型應用程序,這也是一個不錯的選擇。
>這是我們應用程序中使用SQLITE數據庫的步驟的細分:
>使用SQLite數據庫,您必須在燒瓶應用程序配置中設置URI。這通常是在頂部和其他配置一起完成的。這是您可以使用的片段:
在此片段中,/// ...指示文件的相對路徑 - site.db-這是我們用於SQLITE數據庫文件的名稱。此名稱可以更改為您喜歡的任何東西。- >
<span>from flask_sqlalchemy import SQLAlchemy </span> <span>from flask_login import UserMixin, LoginManager, login_user, logout_user, login_required </span> <span>from flask_bcrypt import Bcrypt </span> <span>from flask_login import LoginManager </span> app <span>= Flask(__name__) </span> login_manager <span>= LoginManager() </span> login_manager<span>.init_app(app) </span>
接下來,您必須使用此片段初始化燒瓶-Sqlalchemy Orm: 為了創建此數據庫,我們必須使用Create_all方法初始化數據庫:
-
<span>class User(UserMixin): </span> <span>id = db.Column(db.Integer, primary_key=True) </span>username <span>= db.Column(db.String(64), unique=True) </span>password_hash <span>= db.Column(db.String(128)) </span> <span>def __repr__(self): </span> <span>return <span>f'<user>{self.username}</user></span>>'</span>
此代碼通常放置在Python腳本的末尾或用於初始化數據庫的單獨腳本中。運行腳本後,將根據我們先前定義的模型創建數據庫文件。在這種情況下,如果尚不存在,則代碼將使用用戶表創建一個site.db文件。 site.db文件通常包含在一個名為 /instance /。
的文件夾中 -
app<span>.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db' # Using SQLite as the database</span>
接下來,我們需要創建一個使用用戶ID並返回相應用戶對象的User_loader。這是一個示例:
>密碼哈希
密碼哈希是一種安全措施,它在將用戶密碼存儲在數據庫中之前存儲了密碼的加密表示。這樣,即使應用程序的安全性損害了,也很難獲取實際密碼。
>通常,密碼首先在註冊過程中進行哈希,並存儲在數據庫中。然後,每次用戶登錄時,它們的密碼再次被哈希進行了哈希,並將其與數據庫中存儲的Hashed密碼進行了比較。如果兩個密碼匹配,則對用戶進行身份驗證並訪問了該應用程序。
>如何使用Blask-bcrypt
進行哈希和驗證密碼燒瓶具有稱為燒瓶-bcrypt的擴展名,可幫助實現此功能。它具有兩個主要功能:generate_password_hash()和check_password_hash()。
> theGenerate_password_hash()函數將用戶的密碼作為參數並返回哈希密碼。這通常在註冊邏輯中使用。
>> check_password_hash()函數將密碼和哈希密碼作為參數,如果兩個密碼匹配,則返回true,或者如果不匹配,則false。在授予登錄視圖
>之前,這是調用的創建寄存器視圖
>視圖是用於生成HTML,JSON或發送給用戶瀏覽器的其他數據的燒瓶框架的一部分。在此代碼段中,我們將創建一個視圖,該視圖接受用戶的輸入,並將詳細信息添加到數據庫中:
pip <span>install flask-login flask_sqlalchemy flask_bcrypt</span>
這是代碼的分解:
- >
- 接下來,我們確認請求方法是否是郵政方法:
- 確認後,該函數會以登錄表單檢索用戶輸入的值:
<span>from flask_sqlalchemy import SQLAlchemy </span> <span>from flask_login import UserMixin, LoginManager, login_user, logout_user, login_required </span> <span>from flask_bcrypt import Bcrypt </span> <span>from flask_login import LoginManager </span> app <span>= Flask(__name__) </span> login_manager <span>= LoginManager() </span> login_manager<span>.init_app(app) </span>
<span>class User(UserMixin): </span> <span>id = db.Column(db.Integer, primary_key=True) </span>username <span>= db.Column(db.String(64), unique=True) </span>password_hash <span>= db.Column(db.String(128)) </span> <span>def __repr__(self): </span> <span>return <span>f'<user>{self.username}</user></span>>'</span>
創建登錄視圖 - 在登錄視圖中,我們創建了一個邏輯,該邏輯接受從頁面上接受輸入,然後檢查輸入是否匹配數據庫中的任何行:
這是代碼如何工作的細分:
在第一行 - @app.route(' /login',methods = ['get','post']): - 我們正在使用定義URL路徑路由的裝飾器。該路線接受get和發布請求。當向該路由提出請求時,將執行關聯的功能,login()。
app<span>.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db' # Using SQLite as the database</span>login()函數首先檢查請求方法是否是發布:
>一次,它已確認它是郵政請求,它以登錄表單檢索用戶輸入的值:
pip <span>install flask-login flask_sqlalchemy flask_bcrypt</span>然後,它對提供的用戶名的用戶查詢數據庫:
<span>from flask_sqlalchemy import SQLAlchemy </span> <span>from flask_login import UserMixin, LoginManager, login_user, logout_user, login_required </span> <span>from flask_bcrypt import Bcrypt </span> <span>from flask_login import LoginManager </span> app <span>= Flask(__name__) </span> login_manager <span>= LoginManager() </span> login_manager<span>.init_app(app) </span>
<span>class User(UserMixin): </span> <span>id = db.Column(db.Integer, primary_key=True) </span>username <span>= db.Column(db.String(64), unique=True) </span>password_hash <span>= db.Column(db.String(128)) </span> <span>def __repr__(self): </span> <span>return <span>f'<user>{self.username}</user></span>>'</span>但是,如果請求方法未發布或詳細信息不正確,則將登錄。 html模板:
app<span>.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db' # Using SQLite as the database</span>>使用受保護的視圖創建註銷邏輯
在大多數應用程序中,如果沒有登錄用戶,則某些頁面是無法訪問的。這包括交易歷史記錄,草稿和註銷頁面等頁面。 Blask-Login提供了一種使用login_required Decorator限制對身份驗證用戶的訪問的方便方法。這是其工作原理的細分。
接下來,您必須將login_required Decorator添加到要保護的任何路線中。例如,讓我們創建一個只有在用戶登錄時才能訪問的註銷頁面:
>以下是其工作原理的細分:
>
db <span>= SQLAlchemy(app)</span>>就像在登錄視圖中, @app.route(' /lokout')定義了url路徑 /註銷的路由。
接下來,我們添加一個login_required裝飾器,該裝飾器可確保必須登錄用戶才能訪問註銷路由。如果未登錄用戶並嘗試訪問此路線,則將其重定向到登錄頁面。
<span>if __name__ == '__main__': </span> db<span>.create_all() </span> app<span>.run(debug=True)</span>在註銷函數中,logout_user()被調用。此功能由燒瓶 - login提供,用於記錄當前用戶。
登錄用戶後,該功能將其重定向到使用重定向(url_for('login'))。
- >因此,當用戶訪問 /註銷路由時,燒瓶 - login確保它們已登錄(@login_required),將其註銷並將其重定向到登錄頁面。這有助於安全地處理燒瓶應用程序中的用戶註銷。 login_required Decorator應用於 /受保護的路線,表明只有身份驗證的用戶才能訪問它。如果用戶試圖訪問受保護的頁面而不登錄,則燒瓶將其重定向到登錄頁面。
- 添加模板
- 瓶中的 模板允許您使用HTML頁面來定義網站的外觀。要在我們的app.py文件中充分實現邏輯,我們將創建下圖所示的html頁面。
- >
>您可以看到本教程的完整代碼,並在本文的GitHub存儲庫中了解有關其實現的更多信息。 flask-login如何通過用戶會話cookie
管理用戶會話>用戶會話是一個系統,用於在用戶登錄時跟踪和更新用戶信息。 Flask-Login通過在用戶的瀏覽器上存儲會話cookie來管理這些會話。會話cookie是一小部分數據,其中包含用於用戶會話的唯一標識符。
>用戶使用燒瓶login登錄到網站時,服務器會生成會話cookie並將其發送給用戶的瀏覽器。瀏覽器存儲會話cookie,並將其包含在服務器的所有請求中。服務器使用會話cookie識別用戶及其會話狀態。
> 例如,如果用戶已登錄並訪問受燒瓶login保護的頁面,則Blask-Login將檢查會話cookie,以查看用戶是否已驗證。如果用戶經過身份驗證,則燒瓶login將從數據庫中加載用戶的個人資料信息,並將其用於視圖。如果未對用戶進行身份驗證,則燒瓶-login將將用戶重定向到登錄頁面。>用戶登錄網站時,服務器從用戶的瀏覽器中刪除了會話cookie,該瀏覽器終止了用戶會話。
結論
燒瓶提供了各種功能,可以解決身份驗證的不同方面,從用戶會話管理到授權。通過使用這些功能,您可以實現適合應用程序特定需求的健壯且安全的身份驗證系統。
以上是如何使用燒瓶-login執行用戶身份驗證的詳細內容。更多資訊請關注PHP中文網其他相關文章!

ArraySareAryallyMoremory-Moremory-forigationDataDatueTotheIrfixed-SizenatureAntatureAntatureAndirectMemoryAccess.1)arraysStorelelementsInAcontiguxufulock,ReducingOveringOverheadHeadefromenterSormetormetAdata.2)列表,通常

ToconvertaPythonlisttoanarray,usethearraymodule:1)Importthearraymodule,2)Createalist,3)Usearray(typecode,list)toconvertit,specifyingthetypecodelike'i'forintegers.Thisconversionoptimizesmemoryusageforhomogeneousdata,enhancingperformanceinnumericalcomp

Python列表可以存儲不同類型的數據。示例列表包含整數、字符串、浮點數、布爾值、嵌套列表和字典。列表的靈活性在數據處理和原型設計中很有價值,但需謹慎使用以確保代碼的可讀性和可維護性。

Pythondoesnothavebuilt-inarrays;usethearraymoduleformemory-efficienthomogeneousdatastorage,whilelistsareversatileformixeddatatypes.Arraysareefficientforlargedatasetsofthesametype,whereaslistsofferflexibilityandareeasiertouseformixedorsmallerdatasets.

theSostCommonlyusedModuleForCreatingArraysInpyThonisnumpy.1)NumpyProvidEseffitedToolsForarrayOperations,Idealfornumericaldata.2)arraysCanbeCreatedDusingsnp.Array()for1dand2Structures.3)

toAppendElementStoApythonList,usetheappend()方法forsingleements,Extend()formultiplelements,andinsert()forspecificpositions.1)useeAppend()foraddingoneOnelementAttheend.2)useextendTheEnd.2)useextendexendExendEnd(

TocreateaPythonlist,usesquarebrackets[]andseparateitemswithcommas.1)Listsaredynamicandcanholdmixeddatatypes.2)Useappend(),remove(),andslicingformanipulation.3)Listcomprehensionsareefficientforcreatinglists.4)Becautiouswithlistreferences;usecopy()orsl

金融、科研、医疗和AI等领域中,高效存储和处理数值数据至关重要。1)在金融中,使用内存映射文件和NumPy库可显著提升数据处理速度。2)科研领域,HDF5文件优化数据存储和检索。3)医疗中,数据库优化技术如索引和分区提高数据查询性能。4)AI中,数据分片和分布式训练加速模型训练。通过选择适当的工具和技术,并权衡存储与处理速度之间的trade-off,可以显著提升系统性能和可扩展性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),