gpt4 book ai didi

flask-restful - 在 REST API 中一起使用 flask_login 和 flask-JWT

转载 作者:行者123 更新时间:2023-12-02 01:00:36 25 4
gpt4 key购买 nike

我是flask的新手,最近了解了flask_security/flask_login/flask_user。

我希望我能以某种方式将flask_login 和flask-JWT 一起用于REST API。
基本上,我希望从flask_login 中获得诸如记住我、忘记密码等功能
搜索后发现在同一个flask view.上是不行的

有人可以指导我,怎么做?
谢谢。

最佳答案

flask-login 正是为此目的提供 request_loader 回调,以自定义方式验证请求。

就我而言,我将其添加到我的 create_app 函数中:

@login_manager.request_loader
def load_user_from_request(request):
auth_headers = request.headers.get('Authorization', '').split()
if len(auth_headers) != 2:
return None
try:
token = auth_headers[1]
data = jwt.decode(token, current_app.config['SECRET_KEY'])
user = User.by_email(data['sub'])
if user:
return user
except jwt.ExpiredSignatureError:
return None
except (jwt.InvalidTokenError, Exception) as e:
return None
return None

否则,我跟着 this教程,所以 token 是这样创建的(在登录函数中):
token = jwt.encode({
'sub': user.email,
'iat':datetime.utcnow(),
'exp': datetime.utcnow() + timedelta(minutes=30)},
current_app.config['SECRET_KEY'])

这样你就可以从flask-login 中使用@login_required 而不是定义自定义装饰器来保护 View 。

我使用 PyJWT 而不是 Flask-JWT,因为 Flask-JWT 似乎已停产。

关于flask-restful - 在 REST API 中一起使用 flask_login 和 flask-JWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50856038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com