Cara melaksanakan pengesahan berasaskan Token Web JSON menggunakan Flask-JWT
Ikhtisar:
Dalam aplikasi web moden, keselamatan adalah penting. Salah satu aspek utama ialah pengesahan. Token Web JSON (JWT) ialah standard terbuka untuk meluluskan tuntutan antara aplikasi web. Ia boleh mengesahkan integriti data melalui tandatangan dan melaksanakan pengesahan pengguna berasaskan token.
Dalam artikel ini, kami akan memperkenalkan cara menggunakan sambungan Flask-JWT untuk melaksanakan pengesahan berasaskan Token Web JSON untuk melindungi aplikasi Flask kami.
Pasang Flask-JWT:
Pertama, pastikan anda telah memasang Flask dan Flask-JWT. Ia boleh dipasang menggunakan:
pip install flask pip install flask-jwt
Cara menggunakan:
Flask-JWT menyediakan penghias untuk menambahkan pengesahan token dengan mudah pada fungsi penghalaan Flask. Berikut ialah contoh mudah:
from flask import Flask from flask_jwt import JWT, jwt_required, current_identity from werkzeug.security import safe_str_cmp app = Flask(__name__) app.config['SECRET_KEY'] = 'super-secret-key' class User: def __init__(self, id, username, password): self.id = id self.username = username self.password = password def __str__(self): return f'User(id={self.id}, username={self.username})' users = [ User(1, 'admin', 'adminpassword'), ] def authenticate(username, password): user = next((user for user in users if user.username == username), None) if user and safe_str_cmp(user.password.encode('utf-8'), password.encode('utf-8')): return user def identity(payload): user_id = payload['identity'] return next((user for user in users if user.id == user_id), None) jwt = JWT(app, authenticate, identity) @app.route('/protected') @jwt_required() def protected(): return f'Hello, {current_identity}! This route is protected.' if __name__ == '__main__': app.run()
Dalam kod contoh di atas, kami mula-mula mengimport modul yang diperlukan. Kemudian, kami mentakrifkan kelas Pengguna untuk mewakili entiti pengguna. Seterusnya, kami mentakrifkan senarai pengguna (dengan andaian pangkalan data) untuk digunakan untuk pengesahan.
Fungsi pengesahan digunakan untuk mengesahkan pengguna berdasarkan nama pengguna dan kata laluan yang disediakan. Fungsi identiti mendapatkan objek pengguna berdasarkan ID pengguna dalam muatan JWT.
Kemudian, kami memulakan aplikasi Flask dan menetapkan kunci rahsia (SECRET_KEY). Kami kemudiannya memulakan objek jwt menggunakan kelas JWT dan menyerahkan fungsi pengesahan dan identiti kepadanya.
Penghias @jwt_required()
digunakan pada laluan /protected
untuk melindungi laluan. Hanya pengguna yang disahkan boleh mengaksesnya. /protected
路由上使用了@jwt_required()
装饰器,用于保护该路由。只有经过身份验证的用户才能访问它。
最后,我们启动了Flask应用程序。
进行身份验证:
要进行身份验证,我们需要向应用程序发出HTTP POST请求,传递用户名和密码。Flask-JWT将为我们生成一个JWT令牌。
以下是如何进行身份验证的示例代码:
import requests def authenticate(username, password): response = requests.post('http://localhost:5000/auth', json={'username': username, 'password': password}) if response.status_code == 200: return response.json()['access_token'] access_token = authenticate('admin', 'adminpassword') print(f'Access Token: {access_token}')
在上面的示例中,我们发送了一个HTTP POST请求到/auth
路由,传递了用户名和密码的JSON数据。如果身份验证成功,我们将获得一个access_token。
保护的路由将接受该令牌并验证用户身份。下面是如何在请求头中传递令牌的示例:
import requests headers = { 'Authorization': f'Bearer {access_token}' } response = requests.get('http://localhost:5000/protected', headers=headers) print(response.text)
在上面的示例中,我们将令牌添加到请求头的Authorization
字段中,并将其传递给/protected
Sahkan:
/auth
, menghantar data JSON nama pengguna dan kata laluan. Jika pengesahan berjaya, kami akan mendapat access_token. 🎜🎜Laluan yang dilindungi akan menerima token dan mengesahkan pengguna. Berikut ialah contoh cara untuk menghantar token dalam pengepala permintaan: 🎜rrreee🎜 Dalam contoh di atas, kami menambah token pada medan Authorization
pada pengepala permintaan dan menghantarnya kepada / dilindungi
laluan. Jika token itu sah, kami akan mendapat respons daripada laluan yang dilindungi. 🎜🎜Ringkasan: 🎜Dalam artikel ini, kami mempelajari cara menggunakan sambungan Flask-JWT untuk melaksanakan pengesahan berasaskan Token Web JSON. Kami mempelajari cara menambah penghias pengesahan dalam aplikasi Flask dan menunjukkan cara untuk mengesahkan dengan kod sampel. Token Web JSON menyediakan mekanisme pengesahan yang mudah dan selamat yang boleh digunakan pada pelbagai aplikasi web. 🎜Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pengesahan berasaskan Token Web JSON menggunakan Flask-JWT. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!