Chainlit 应用程序默认是公开的。要启用认证并使您的应用私有,您需要

  1. 定义一个 CHAINLIT_AUTH_SECRET 环境变量。这是一个用于签名认证令牌的秘密字符串。您可以随时更改它,但这会使所有用户注销。您可以使用 chainlit create-secret 轻松生成一个。
  2. 向您的应用添加一个或多个认证回调

每个回调接受不同的输入,并可选择返回一个 cl.User 对象。如果回调返回 None,则认证被视为失败。

确保每个用户都有唯一的标识符,以防止他们共享数据。

获取当前认证用户

您可以通过用户会话访问当前认证用户。

@cl.on_chat_start
async def on_chat_start():
    app_user = cl.user_session.get("user")
    await cl.Message(f"Hello {app_user.identifier}").send()