溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何在Flask中對(duì)REST API進(jìn)行認(rèn)證和授權(quán)

發(fā)布時(shí)間:2024-04-30 09:47:14 來源:億速云 閱讀:90 作者:小樊 欄目:web開發(fā)

在Flask中對(duì)REST API進(jìn)行認(rèn)證和授權(quán)可以通過使用Flask插件來實(shí)現(xiàn)。常用的插件有Flask-JWT-Extended和Flask-HTTPAuth。

下面是一個(gè)使用Flask-JWT-Extended插件來進(jìn)行認(rèn)證和授權(quán)的示例:

from flask import Flask, jsonify
from flask_jwt_extended import JWTManager, jwt_required, create_access_token

app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'super-secret'  # Change this!
jwt = JWTManager(app)

# Mock user data
users = {
    'test': 'test123'
}

@app.route('/login', methods=['POST'])
def login():
    username = request.json.get('username', None)
    password = request.json.get('password', None)
    
    if not username or not password:
        return jsonify({"msg": "Missing username or password"}), 400
    
    if users.get(username) != password:
        return jsonify({"msg": "Bad username or password"}), 401
    
    access_token = create_access_token(identity=username)
    return jsonify(access_token=access_token)

@app.route('/protected', methods=['GET'])
@jwt_required()
def protected():
    return jsonify(logged_in_as=current_identity), 200

if __name__ == '__main__':
    app.run()

在上面的示例中,首先我們導(dǎo)入了Flask和Flask-JWT-Extended插件。然后我們?cè)O(shè)置了JWT的密鑰,并創(chuàng)建了一個(gè)JWTManager對(duì)象。接著我們定義了一個(gè)login路由用來進(jìn)行用戶認(rèn)證,如果用戶名和密碼匹配則創(chuàng)建一個(gè)access token并返回給用戶。最后我們定義了一個(gè)protected路由,使用@jwt_required()裝飾器來限制只有認(rèn)證用戶才能訪問。

通過以上示例,我們可以看到如何使用Flask-JWT-Extended來對(duì)REST API進(jìn)行認(rèn)證和授權(quán)。其他插件如Flask-HTTPAuth也提供了類似的功能,具體使用方式可參考它們的文檔。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI