好的,你很辛苦的写了很多API function,但是你却不希望闲杂人等没事就call一下你的API功能。
也许,你该试试JWT了。JWT的主要功能是进行验证、授权、资讯交换,你也可以搜寻一下JWT介绍以及他与session之间的比较。
https://github.com/wilsonsujames/jwt_test/blob/main/app.py
pip install Flask-JWT-Extended
from flask_jwt_extended import create_access_token, jwt_required,set_access_cookies,unset_jwt_cookies,JWTManager
from flask import Flask,render_template,jsonify, request
import os
jwt = JWTManager()
app = Flask(__name__)
jwt.init_app(app)
app.config['JWT_SECRET_KEY'] = os.urandom(24)
app.config['JWT_TOKEN_LOCATION'] = ['headers','query_string']
app.config['JWT_BLACKLIST_ENABLED'] = True
app.config['JWT_BLACKLIST_TOKEN_CHECKS'] = ['access']
@app.route('/')
def index():
AccountName=request.form.get('AccountName')
access_token = create_access_token(identity=AccountName)
return jsonify({'login_status':'seccess','jwt':access_token})
@app.route('/helloJwt')
@jwt_required()
def jwtTest():
return 'jwt test success.'
if __name__ == "__main__":
app.run(debug=True,threaded=True,port=8888)
好的,来到程序码来看最基本的运用,执行程序到根路由,你可以用postman也可以用requests套件来夹带JWT call api,但是我们这里使用更简单的方式,直接在浏览器上贴上:
http://127.0.0.1:5000/helloJwt?jwt= + 你从根路由获得的JWT
只是我的JWT跟你的长得不一样而已,好的现在你能让只有知道JWT的人,才能使用jwtTest这个function了。
但是假设你想要夹带附加资讯呢?
https://flask-jwt-extended.readthedocs.io/en/stable/add_custom_data_claims/
additional_claims = {"aud": "some_audience", "foo": "bar"}
access_token = create_access_token(username, additional_claims=additional_claims)
可以发现在additional_claims的参数我们夹带了额外资讯。
@app.route("/protected", methods=["GET"])
@jwt_required()
def protected():
claims = get_jwt()
return jsonify(foo=claims["foo"])
在jwt_required的路由藉由get_jwt()来获取额外资讯。
注意
未来的API如果为POST的方法:
@member_blueprint.route('/member_login', methods=["POST"])
请乖乖地使用requests或是postman,来顺利地call api。
第四天就到这里吧,刚好九点了。
<<: {CMoney战斗营} 的第十一周 #两天转换程序语言
>>: CMoney菁英软件工程师战斗营前端课程_Week 11
C:\Windows\System32\inetsrv InetMgr.exe ...
工业控制系统 Industrial Control System 简称 ICS = 电脑与工业设备...
https://leetcode.com/problems/longest-increasing-...
今天的内容是页面前後端资料传递,这个部分跟前面相比来说简单许多也比较直觉话。如果以前有写过 Vue....
Day34 Golang 操作CSV CVS 是以逗号,及换行\n分隔的资料格式, 从CSV的英文(...