【问题标题】:Hot to set up permissions for GraphQL with graphene and SQLalchemy使用石墨烯和 SQLalchemy 为 GraphQL 设置权限很热门
【发布时间】:2018-06-27 02:11:11
【问题描述】:

我的石墨烯架构上有客户、用户、项目和旅行:

class Clients(SQLAlchemyObjectType):
    class Meta:
        model = ClientModel
        interfaces = (relay.Node, )

class Users(SQLAlchemyObjectType):
    class Meta:
        model = UserModel
        interfaces = (relay.Node, )

class Projects(SQLAlchemyObjectType):
    class Meta:
        model = ProjectModel
        interfaces = (relay.Node, )

class Trips(SQLAlchemyObjectType):
    class Meta:
        model = TripModel
        interfaces = (relay.Node, )

我想要做的是设置权限,以便有人传递与特定客户匹配的访问令牌,并仅显示该特定客户的用户、项目和旅行。

如何做到这一点?石墨烯有没有办法做到这一点?

【问题讨论】:

    标签: python flask sqlalchemy graphql graphene-python


    【解决方案1】:

    我用flask_httpauth做到了:

    from flask_httpauth import HTTPTokenAuth
    @auth.verify_token
    def verify_token(token):
        for client in ClientModel.query.all():
            if client.access_token == token:
                g.current_user = client
                return True
        return False
    

    然后我只是将 login_required 装饰器放在我的 Query 类的每个 resolve_ 函数上,如下所示:

    @auth.login_required
        def resolve_clients(self, info):
            current_client = g.current_user
            for client in ClientModel.query.all():
                if client.id == current_client.id:
                    return client
            return None
    

    【讨论】:

      猜你喜欢
      • 2017-05-11
      • 2020-07-27
      • 2017-05-13
      • 2021-11-06
      • 2018-03-11
      • 2018-03-22
      • 2018-03-06
      • 2020-09-19
      • 2019-08-26
      相关资源
      最近更新 更多