
前提条件
在开始本教程之前,请确保第一个教程中的机器人正在无错误地运行。1. 添加资源授权
回顾上一个教程,Auth 对象允许你注册一个认证函数,LangSmith 使用该函数来验证传入请求中的承载令牌。现在你将使用它来注册一个授权处理器。
授权处理器是在认证成功之后运行的函数。这些处理器可以为资源添加元数据(例如所有者是谁)并过滤每个用户可以看到的内容。
更新你的 src/security/auth.py 并添加一个在每个请求上运行的授权处理器:
src/security/auth.py
ctx(AuthContext):包含有关当前user、用户permissions、resource(“threads”、“crons”、“assistants”)和正在执行的action(“create”、“read”、“update”、“delete”、“search”、“create_run”)的信息value(dict):正在创建或访问的数据。此字典的内容取决于正在访问的资源和操作。有关如何获得更严格范围的访问控制的信息,请参阅下面的添加范围化授权处理器。
- 将用户的 ID 添加到资源的元数据中。
- 返回一个元数据过滤器,使用户只能看到他们拥有的资源。
2. 测试私有对话
测试你的授权。如果设置正确,你将看到所有 ✅ 消息。请确保你的开发服务器正在运行(运行langgraph dev):
- 每个用户都可以在自己的线程中创建和聊天
- 用户无法看到彼此的线程
- 列出线程只显示自己的
3. 添加范围化授权处理器
广泛的@auth.on 处理器匹配所有授权事件。这很简洁,但意味着 value 字典的内容没有很好的范围限定,并且相同的用户级访问控制应用于每个资源。如果你想更细粒度,你也可以控制对资源的特定操作。
更新 src/security/auth.py 以添加针对特定资源类型的处理器:
- 创建线程
- 读取线程
- 访问助手
@auth.on.assistants)匹配 assistants 资源上的任何操作。对于每个请求,LangGraph 将运行匹配正在访问的资源和操作的最具体的处理器。这意味着上述四个处理器将运行,而不是广泛范围的 “@auth.on” 处理器。
尝试将以下测试代码添加到你的测试文件中:
后续步骤
现在你可以控制对资源的访问,你可能想要:通过 MCP 将这些文档连接到 Claude、VSCode 等,以获得实时答案。

