


Pengesahan adalah bahagian penting dari mana -mana aplikasi web yang membolehkan pengguna mengakses data atau sumber kerana ia hanya memastikan bahawa hanya orang yang tepat mendapat akses kepada maklumat sensitif. Ini juga boleh dicapai dalam kelalang menggunakan flask-login.
Flask-Login adalah lanjutan dalam flask dengan fungsi yang mengendalikan pembalakan dan keluar dari pengguna dan menjejaki pengguna semasa sepanjang aplikasi. Ini memudahkan untuk melaksanakan pengesahan dan kebenaran dalam aplikasi flask anda.
Takeaways Key
- Kemudahan Pengesahan dengan Flask-Login: Flask-Login Memudahkan pelaksanaan Pengesahan Pengguna dalam Aplikasi Flask. Ia menyediakan ciri -ciri penting seperti pengurusan sesi pengguna, fungsi login/logout mudah, dan panggilan balik pemuat pengguna untuk integrasi lancar dengan pangkalan data. Ini membantu dalam menguruskan sesi pengguna dengan cekap dan mengendalikan proses pengesahan.
- Pengendalian kata laluan selamat dan pengurusan sesi pengguna: Kami akan memperincikan kepentingan keselamatan kata laluan menggunakan flask-bcrypt untuk kata laluan hashing, dan bagaimana flask-Login menguruskan sesi pengguna dengan cookies sesi. Ini memastikan bahawa kelayakan pengguna disimpan dengan selamat dan sesi pengguna dijejaki dengan tepat, meningkatkan keselamatan keseluruhan aplikasi.
- Panduan Pelaksanaan Praktikal: Kami menyediakan panduan yang komprehensif untuk menubuhkan dan menggunakan flask-login, termasuk membuat model pengguna, mengkonfigurasi pangkalan data (SQLite), mewujudkan pandangan untuk pendaftaran pengguna dan log masuk, dan melaksanakan logik log keluar dengan laluan yang dilindungi. Ia memberikan pendekatan praktikal untuk membina sistem pengesahan pengguna yang selamat dalam aplikasi flask, menjadikannya mudah untuk mereka yang baru untuk pembangunan aplikasi atau aplikasi web.
Flask-Login mempunyai beberapa ciri dan fungsi yang memudahkan untuk melakukan pengesahan dengan lancar dalam aplikasi Flask. Berikut adalah beberapa manfaat menggunakan Flask-Login:
- Pengurusan Sesi Pengguna. Flask-Login mengendalikan penciptaan dan pemusnahan sesi pengguna. Ia juga boleh menyimpan ID pengguna semasa dalam sesi supaya anda dapat dengan mudah menyemak sama ada pengguna log masuk.
- fungsi log masuk dan logout. Flask-Login menyediakan fungsi log masuk dan logout terbina dalam. Fungsi -fungsi ini menjaga semua proses penting, seperti membuat dan memusnahkan sesi dan mengalihkan pengguna ke halaman yang sesuai.
- Panggil balik Loader Pengguna. Flask-Login membolehkan anda menentukan panggilan balik loader pengguna. Panggilan balik ini digunakan untuk memuatkan objek pengguna untuk sesi semasa. Ini berguna jika anda menggunakan pangkalan data untuk menyimpan maklumat pengguna.
- Pengesahan dan kebenaran. Flask-Login memudahkan untuk melaksanakan pengesahan dan kebenaran dalam aplikasi anda. Anda boleh menggunakan flask-login untuk melindungi halaman atau laluan tertentu dan memberi pengguna tahap akses yang berbeza ke aplikasi anda.
Prasyarat
untuk mengikuti lama dengan artikel ini, anda memerlukan yang berikut:
- Pengetahuan mengenai sintaks python dan flask
- Pengetahuan asas HTML dan CSS
- versi python 3 dan flask dipasang
Jelas sekali anda juga memerlukan akses kepada penyemak imbas web.
Bermula
Untuk menggunakan sepenuhnya modul log masuk flask, kita perlu mempunyai flask-login dan lain-lain kebergantungan yang diperlukan dipasang. Perpustakaan ini menyediakan fungsi dan alat yang diperlukan untuk meningkatkan fungsi aplikasi anda. Untuk memasangnya, buka command prompt atau terminal anda dan laksanakan arahan PIP berikut:
pip <span>install flask-login flask_sqlalchemy flask_bcrypt</span>
Berikut adalah pecahan apa yang setiap perpustakaan ini digunakan untuk:
- Flask-Sqlalchemy: Mengintegrasikan SQLalchemy dengan Flask untuk Operasi Pangkalan Data
- flask-bcrypt: tambah hashing bcrypt untuk keselamatan kata laluan dalam kelalang
Setelah pemasangan selesai, ia secara automatik akan mempunyai log masuk flask yang dimuat turun dalam direktori yang anda gunakan.
Nota: Pada masa penulisan, terdapat sedikit masalah dalam menyelesaikan kebergantungan dalam versi terkini Flask dan Werkzeug. Untuk menyelesaikannya, anda perlu memaksa memasang versi 2.3.0 dari Werkzeug, kerana ia adalah satu -satunya versi yang diketahui berfungsi sekarang.
Setelah dependensi anda telah dipasang, anda perlu memulakannya dengan aplikasi Flask anda:
<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>
Dalam coretan kod di atas, kami juga telah memulakan objek LoginManager dalam permohonan kami. LoginManager adalah lanjutan flask-login yang digunakan untuk menubuhkan konfigurasi yang diperlukan untuk mengendalikan sesi pengguna.
Membuat Model Pengguna
Model adalah perwakilan struktur data yang anda ingin gunakan dalam aplikasi anda. Ia mentakrifkan bagaimana data dianjurkan, disimpan, dan dimanipulasi dalam sistem. Model biasanya digunakan dengan pangkalan data yang mengikuti struktur yang ditakrifkan terlebih dahulu. Untuk aplikasi kami, kami mempunyai data berikut:
- id unik
- nama pengguna
- kata laluan (hashed)
pip <span>install flask-login flask_sqlalchemy flask_bcrypt</span>
Anda juga boleh menambah sifat tambahan kepada model pengguna anda, seperti alamat e -mel atau gambar profil, bergantung pada skop projek anda.
Membuat pangkalan data
Sebaik sahaja anda telah menentukan model pengguna anda, anda perlu membuat pangkalan data yang akan menyimpan struktur data yang kami buat dalam model sebelumnya.
Untuk artikel ini, kami akan menggunakan pangkalan data SQLite. Ini kerana SQLite adalah enjin pangkalan data ringan dan tanpa pelayan. Ini menjadikannya mudah untuk ditubuhkan dan digunakan, kerana ia tidak memerlukan pemasangan yang berasingan. Ia juga merupakan pilihan yang baik untuk aplikasi kecil hingga sederhana.
Berikut adalah pecahan langkah -langkah untuk menggunakan pangkalan data SQLite dalam aplikasi kami:
- Untuk menggunakan pangkalan data SQLite, anda perlu menetapkan URI dalam konfigurasi aplikasi Flask anda. Ini biasanya dilakukan di bahagian atas, bersama konfigurasi lain. Berikut adalah coretan yang boleh anda gunakan:
<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>
Dalam coretan ini, /// ... menunjukkan laluan relatif ke fail anda - site.db - yang merupakan nama yang kami gunakan untuk fail pangkalan data SQLite kami. Nama ini boleh ditukar kepada apa sahaja yang anda sukai.
- Seterusnya, anda perlu memulakan Orm Flask-Sqlalchemy menggunakan coretan ini:
<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>
SQLalChemy adalah pemetaan objek-relasi yang menyediakan satu set alat untuk bekerja dengan pangkalan data menggunakan Python. Talian db = sqlalchemy (app) mencipta contoh kelas sqlalchemy dan mengikatnya ke aplikasi flask anda (app).
- Untuk membuat pangkalan data ini, kita perlu memulakan pangkalan data, menggunakan kaedah create_all:
app<span>.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db' # Using SQLite as the database</span>
Kod ini biasanya diletakkan pada akhir skrip Python anda atau dalam skrip berasingan yang didedikasikan untuk memulakan pangkalan data. Sebaik sahaja anda menjalankan skrip anda, fail pangkalan data akan dibuat dengan jadual yang sepadan berdasarkan model yang kami tentukan sebelumnya.
Dalam kes ini, kod akan membuat fail Site.db dengan jadual pengguna jika ia belum wujud. Fail site.db biasanya datang dalam folder yang dipanggil /instance /.
Seterusnya, kita perlu membuat user_loader yang mengambil ID pengguna dan mengembalikan objek pengguna yang sepadan. Berikut adalah contoh:
db <span>= SQLAlchemy(app)</span>
Hashing Kata Laluan
Hashing Kata Laluan adalah langkah keselamatan yang menyimpan perwakilan kriptografi kata laluan pengguna sebelum ia disimpan dalam pangkalan data. Dengan cara ini, ia menjadi lebih sukar untuk mendapatkan kata laluan sebenar walaupun keselamatan aplikasi telah dikompromi.
Biasanya, kata laluan pertama kali hash dalam proses pendaftaran dan disimpan dalam pangkalan data. Kemudian, setiap kali pengguna log masuk, kata laluan mereka telah dimakan semula dan dibandingkan dengan kata laluan hashed yang disimpan dalam pangkalan data. Sekiranya kedua -dua kata laluan sepadan, pengguna disahkan dan diberi akses kepada aplikasi.
bagaimana hash dan sahkan kata laluan menggunakan flask-bcrypt
Flask mempunyai lanjutan yang dipanggil Flask-Bcrypt yang membantu mencapai fungsi ini. Ia mempunyai dua fungsi utama: penjana_password_hash () dan check_password_hash ().
fungsi theGenerate_password_hash () mengambil kata laluan pengguna sebagai hujah dan mengembalikan kata laluan hashed. Ini biasanya digunakan dalam logik pendaftaran.
fungsi check_password_hash () mengambil kata laluan dan kata laluan hashed sebagai argumen dan mengembalikan benar jika kedua -dua kata laluan sepadan, atau palsu jika mereka tidak sepadan. Ini dipanggil sebelum memberikan akses kepada paparan log masuk
Membuat paparan daftar
Pandangan adalah sebahagian daripada kerangka flask yang digunakan untuk menghasilkan HTML, JSON, atau data lain yang dihantar kepada penyemak imbas pengguna. Dalam coretan kod ini, kami akan membuat pandangan yang menerima input pengguna dan menambah butiran ke pangkalan data:
pip <span>install flask-login flask_sqlalchemy flask_bcrypt</span>
Berikut adalah pecahan kod:
- Pada baris pertama, kami menentukan laluan untuk laluan URL /Login. Laluan ini menerima permintaan GET dan pos. Fungsi log masuk (), yang dikaitkan dengan laluan, akan dilaksanakan apabila permintaan dibuat.
- Seterusnya, kami mengesahkan jika kaedah permintaan adalah kaedah pos:
<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>
Sebaik sahaja ia disahkan, fungsi mengambil nilai yang dimasukkan oleh pengguna dalam bentuk log masuk:
<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>
- Ia kemudian menanyakan pangkalan data untuk pengguna dengan nama pengguna yang disediakan. Sekiranya pengguna dengan nama pengguna yang disediakan dijumpai dan kata laluan sepadan, kod di dalam blok ini akan dilaksanakan.
Membuat paparan log masuk
Dalam paparan log masuk, kami membuat logik yang menerima input dari halaman dan kemudian memeriksa jika input sepadan dengan mana -mana baris dalam pangkalan data:
app<span>.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db' # Using SQLite as the database</span>
Berikut adalah pecahan bagaimana kod berfungsi:
- di baris pertama - @app.route (' /login', kaedah = ['get', 'post']): - Kami menggunakan penghias yang mentakrifkan laluan untuk laluan URL /Login . Laluan ini menerima permintaan GET dan pos. Fungsi yang berkaitan, login (), akan dilaksanakan apabila permintaan dibuat ke laluan ini.
- fungsi log masuk () bermula dengan menyemak sama ada kaedah permintaan adalah pos:
db <span>= SQLAlchemy(app)</span>
Sekali, ia mengesahkan bahawa ia adalah permintaan pos, ia mengambil nilai -nilai yang dimasukkan oleh pengguna dalam bentuk log masuk:
pip <span>install flask-login flask_sqlalchemy flask_bcrypt</span>
- Ia kemudian menanyakan pangkalan data untuk pengguna dengan nama pengguna yang disediakan:
<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>
- Jika kedua-dua nama pengguna dan kata laluan disahkan, pengguna diberikan akses menggunakan fungsi login_user dan redirect Flask-Login:
<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<span>.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db' # Using SQLite as the database</span>
Pada dasarnya, ia memeriksa jika kelayakan yang dimasukkan sah, log pengguna masuk, dan mengalihkannya ke halaman Selamat Datang jika berjaya. Sekiranya log masuk tidak berjaya atau permintaan GET, ia menjadikan templat log masuk untuk pengguna memasukkan kelayakan mereka.
Dalam kebanyakan aplikasi, beberapa halaman tidak dapat diakses jika pengguna tidak log masuk. Ini termasuk halaman seperti sejarah transaksi, draf, dan halaman logout. Flask-Login menyediakan cara yang mudah untuk melindungi halaman/laluan ini dan menyekat akses kepada pengguna yang disahkan menggunakan penghias Login_required. Berikut adalah pecahan bagaimana ia berfungsi.
Untuk menggunakan fungsi ini, anda perlu mengimport penghias Login_Required dari Flask-Login:
db <span>= SQLAlchemy(app)</span>Seterusnya, anda perlu menambah penghias Login_Required ke mana -mana laluan yang anda mahu lindungi. Sebagai contoh, mari buat halaman logout yang hanya boleh diakses apabila pengguna dilog masuk:
<span>if __name__ == '__main__': </span> db<span>.create_all() </span> app<span>.run(debug=True)</span>Berikut adalah pecahan bagaimana ia berfungsi:
- Sama seperti dalam paparan login, @app.route (' /logout') mentakrifkan laluan untuk laluan URL /logout.
- Seterusnya, kami menambah penghias Login_required yang memastikan pengguna mesti log masuk untuk mengakses laluan logout. Sekiranya pengguna tidak log masuk dan cuba mengakses laluan ini, mereka akan diarahkan ke halaman log masuk.
- Di dalam fungsi logout, logout_user () dipanggil. Fungsi ini disediakan oleh Flask-Login dan digunakan untuk log pengguna semasa.
- Selepas log keluar pengguna, fungsi mengalihkannya ke laluan masuk menggunakan redirect (url_for ('login')).
Menambah templat
Templat dalam Flask membolehkan anda menggunakan halaman HTML untuk menentukan bagaimana laman web anda akan kelihatan. Untuk melaksanakan sepenuhnya logik dalam fail app.py kami, kami akan membuat halaman HTML yang digambarkan di bawah.
Animasi di bawah menunjukkan bagaimana templat menjadikan halaman yang berbeza dari laman web kami.
Anda dapat melihat kod penuh untuk tutorial ini dan mengetahui lebih lanjut mengenai pelaksanaannya dalam repositori GitHub artikel ini.
bagaimana flask-login menguruskan sesi pengguna dengan cookies sesi pengguna
Sesi pengguna adalah sistem yang digunakan untuk mengesan dan mengemas kini maklumat pengguna semasa pengguna dilog masuk. Flask-Login menguruskan sesi ini dengan menyimpan cookie sesi pada penyemak imbas pengguna. Cookie Sesi adalah sekeping data kecil yang mengandungi pengecam unik untuk sesi pengguna.
Apabila pengguna log masuk ke laman web menggunakan Flask-Login, pelayan menghasilkan cookie sesi dan menghantarnya ke penyemak imbas pengguna. Penyemak imbas menyimpan cookie sesi dan memasukkannya dalam semua permintaan ke pelayan. Pelayan menggunakan cookie sesi untuk mengenal pasti pengguna dan keadaan sesi mereka.
Sebagai contoh, jika pengguna dilog masuk dan melawat halaman yang dilindungi oleh Flask-Login, Flask-Login akan menyemak cookie sesi untuk melihat apakah pengguna disahkan. Jika pengguna disahkan, Flask-Login akan memuatkan maklumat profil pengguna dari pangkalan data dan menjadikannya tersedia untuk paparan. Jika pengguna tidak disahkan, Flask-Login akan mengalihkan pengguna ke halaman log masuk.
Apabila pengguna log keluar dari laman web, pelayan memadamkan cookie sesi dari pelayar pengguna, yang menamatkan sesi pengguna.
Kesimpulan
Flask menawarkan pelbagai fungsi yang menangani pelbagai aspek pengesahan, mulai dari pengurusan sesi pengguna hingga kebenaran. Dengan menggunakan fungsi ini, anda boleh melaksanakan sistem pengesahan yang mantap dan selamat yang disesuaikan dengan keperluan khusus aplikasi anda.
Atas ialah kandungan terperinci Cara Melakukan Pengesahan Pengguna dengan Flask-Login. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

ArraysareGenerallymorememememory-efficientthanlistsforstoringnumericaldataduetotheirfixed-sizenatureanddirectmemoryaccess.1) arraysstoreelementsinacontiguousblock, reducingoverheadfrointersormetadata.2)

ToConvertapythonlisttoanarray, usetheArraymodule: 1) importThearraymodule, 2) createalist, 3) UseArray (typecode, list) toConvertit, spesifyingthetypecodelike'i'forintegers.ThisconversionOptimizesMogenhomogeneousdata, enHomerMogeneShomogeneousdata, enHomerMogeneousdata, enhomoMogenerDataShomaSdata, enhomoMogenhomogeneousdata,

Senarai Python boleh menyimpan pelbagai jenis data. Senarai contoh mengandungi integer, rentetan, nombor titik terapung, boolean, senarai bersarang, dan kamus. Senarai fleksibiliti adalah berharga dalam pemprosesan data dan prototaip, tetapi ia perlu digunakan dengan berhati -hati untuk memastikan kebolehbacaan dan pemeliharaan kod.

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

Themostcomonlyedmoduleforcreatingarraysinpythonisnumpy.1) numpyprovidesefficienttoolsforarrayoperations, idealfornumericaldata.2) arrayscanbecreatedingingnp.array () for1dand2dstructures

ToAppendElementStoapyThonList, useTheAppend () methodforsingleelements, extend () formultipleelements, andInsert () forspecificposition.1) useAppend () foraddingOneElementAttheend.2)

TOCREATEAPYTHONLIST, USESQUAREBRACKETS [] danSeparatateItemSwithCommas.1) listsaredynamicandCanHoldMixedDatypes.2) UseAppend (), mengalih keluar (), danSlicingFormApulation.3)

Dalam bidang kewangan, penyelidikan saintifik, penjagaan perubatan dan AI, adalah penting untuk menyimpan dan memproses data berangka dengan cekap. 1) Dalam Kewangan, menggunakan memori yang dipetakan fail dan perpustakaan Numpy dapat meningkatkan kelajuan pemprosesan data dengan ketara. 2) Dalam bidang penyelidikan saintifik, fail HDF5 dioptimumkan untuk penyimpanan data dan pengambilan semula. 3) Dalam penjagaan perubatan, teknologi pengoptimuman pangkalan data seperti pengindeksan dan pembahagian meningkatkan prestasi pertanyaan data. 4) Dalam AI, data sharding dan diedarkan latihan mempercepatkan latihan model. Prestasi dan skalabiliti sistem dapat ditingkatkan dengan ketara dengan memilih alat dan teknologi yang tepat dan menimbang perdagangan antara kelajuan penyimpanan dan pemprosesan.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),
