0

这是我第一个如此裸露的 API。

当我发现 GraphQL 时,我正在开发一个用 Flask 制作的 RESTful API 来与我的 React 前端交互。作为一种节省网络资源的好方法,我决定改用它。我选择 Ariadne 是因为有一种简单的方法可以将它与 Flask 集成。

但是,在更改所有逻辑以使用 Ariadne 时,我在验证和验证用户登录时发现并发出了问题。通过 REST API,我可以使用 Flask-jwt-extended 库来处理用户身份验证。例如,我有一个更改用户名的功能。

@app.route("/change-username", methods=["POST"]) 
@jwt_required 
def change_username():
     ...
     return {"msg": "Username changed successfully"}, 200 

此端点要求用户登录才能访问。然后我有另一个禁止用户

@app.route("/ban-user", methods=["POST"]) 
@jwt_required
def ban_user():
     if current_user.role == "moderator":
         ...
        return {"msg": "User has been banned"}, 200
     else:
         return {"msg": "You are not authorized to ban users"}, 401 

这种方法之所以有效,是因为每个端点都可以单独设置为需要或不需要身份验证,但是使用 GraphQL 只使用一个端点,所以我要么必须公开所有数据,要么将所有数据放在身份验证墙后面,这是我不需要的真的很想要。

有没有办法单独设置每个查询以要求或不进行身份验证,我将如何以这种方式处理当前登录的用户?

4

0 回答 0