You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ariadne GraphQL文档信息缺失疑问:突变章节auth变量无对应说明

关于Ariadne文档中auth变量的说明

Ariadne官方文档示例中的auth是演示用的占位对象,不属于框架内置API,你可以根据自身项目的身份认证逻辑自行实现,以下是适配Flask场景的常用实现方案:

核心方法对应逻辑

auth对象需要的三个方法可按照你的认证方案实现,常用的Cookie会话场景逻辑如下:

  • authenticate:校验登录请求传入的账号密码有效性,通常为查询用户表比对密码哈希,匹配则返回对应用户对象,不匹配返回None
  • login:将登录成功的用户信息写入当前会话,Flask场景下直接操作flask.session存储用户ID即可
  • logout:清空当前会话中的用户身份信息,删除session中存储的用户ID字段即可

示例实现代码

from flask import session
from your_app.models import User
from werkzeug.security import check_password_hash

class Auth:
    def authenticate(self, username: str, password: str):
        # 校验账号密码有效性
        user = User.query.filter_by(username=username).first()
        if user and check_password_hash(user.password_hash, password):
            return user
        return None
    
    def login(self, user):
        # 写入用户身份到会话
        session["user_id"] = user.id
        # 按需配置会话永久有效
        session.permanent = True
    
    def logout(self):
        # 清空会话中的用户身份
        session.pop("user_id", None)

# 初始化实例后即可在resolver中使用
auth = Auth()

JWT认证场景适配

如果你的项目使用JWT而非Cookie会话,可对应调整方法逻辑:

  • authenticate逻辑不变,仍为校验账号密码有效性
  • login方法修改为生成JWT令牌并返回给客户端
  • logout方法可在客户端直接删除令牌,服务端需要主动失效的话可维护令牌黑名单

你可以完全根据自身项目的认证方案调整该对象的实现,只要保留resolver中用到的方法调用逻辑即可,无需严格对齐文档示例。

内容的提问来源于stack exchange,提问作者beginner_dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:15:06