首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >烧瓶-无瓶登录-sqlalchemy或ORM

问烧瓶-无瓶登录-sqlalchemy或ORM
EN

Stack Overflow用户
提问于 2019-02-18 15:00:46
回答 1查看 4.4K关注 0票数 8

我目前正在使用烧瓶-登录在我的应用程序的用户登录会话管理。我用的是烧瓶炼金术,所以一切正常。由于我以前的sql经验,我不喜欢ORM。我喜欢直接使用SQL。也许是因为我在ORM方面的知识不健全。无论如何,我的问题是-我是否可以使用烧瓶登录而不用ORM/烧瓶-sqlalchemy,在那里我要通过pymysql或MySQL-连接器获取用户数据?

我知道我可以在退出时自己创建会话和弹出会话,但是我想知道是否有任何方法可以在pymysql中使用烧瓶登录或任何其他会话管理库?

EN

回答 1

Stack Overflow用户

发布于 2022-10-30 01:31:59

我提出了以下解决方案。它允许重新定义从请求Authorization头获取用户并在无状态应用程序中使用。

代码语言:javascript
复制
from flask_login import login_required, LoginManager

login_manager = LoginManager()
login_manager.init_app(app)


@login_manager.request_loader
def load_user_from_request(request):
  api_key: str = request.headers.get('Authorization')
  if api_key:
    token_type, token = api_key.split()
    print("token_type:" + token_type)
    if token_type == "JWT" and token:
        decoded_token: dict = decode_token(token)
        username = decoded_token['identity']
        user: User = get_user(username)
        return user
  return None

因此,如果您的端点只允许授权用户使用,则@jwt_required或@login_required注释可以与方法一起使用。

确保路由注释是确保其他注释正确工作的第一个;您的端点可以如下所示:

代码语言:javascript
复制
@app.route('/api/users', methods=['GET'])
@login_required
@roles_required(['Admin'])  # optional
def list_users():
   return list[]  # your code here

这里是另一个提到的注释,@roles_required,当然不是必须的。由于Flask用户管理要求您使用ORM,所以您可以通过定义自己的@roles_required注释(参见示例这里 )来克服这一问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54750019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档