使用石墨烯和 SQLalchemy 为 GraphQL 设置权限很热门
Posted
技术标签:
【中文标题】使用石墨烯和 SQLalchemy 为 GraphQL 设置权限很热门【英文标题】:Hot to set up permissions for GraphQL with graphene and SQLalchemy 【发布时间】: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, )
我想要做的是设置权限,以便有人传递与特定客户匹配的访问令牌,并仅显示该特定客户的用户、项目和旅行。
如何做到这一点?石墨烯有没有办法做到这一点?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于使用石墨烯和 SQLalchemy 为 GraphQL 设置权限很热门的主要内容,如果未能解决你的问题,请参考以下文章