嵌入通过 Atlas App Services 进行身份验证的图表
Atlas App Services是一个无服务器平台,使开发者能够快速构建应用程序,而无需设立服务器基础架构。App Services提供多种身份验证选项,包括 Google OAuth 、 Facebook登录 和电子邮件/密码。您可以使用应用服务中的身份验证机制来控制嵌入式图表的数据访问。
本教程向您展示如何:
为图表启用经过身份验证的嵌入。
使用 Embedding SDK 嵌入由自定义 Atlas App Services 提供商认证的图表。
使用应用服务控制嵌入式图表中的数据。
注意
本教程不包括创建带身份验证的应用程序服务。有关应用程序创建教程,请参阅 Atlas App Services 文档。
先决条件
步骤
为图表启用经过身份验证的嵌入
启用经过身份验证的嵌入以生成 Charts 基本 URL 和图表 ID。 您需要 Charts 基本 URL 和图表 ID 才能在网页上显示图表。
将 切换为Enable authenticated access On。
配置 Charts 以使用自定义 Atlas App Services Provider
GoAuthentication Settings 视图。
注意
您必须是项目所有者才能访问权限Authentication Settings页面。 作为非管理员用户,您仍然可以使用嵌入式图表,但必须从项目所有者那里获取密钥。
单击 Authentication Settings 标签页。
设置切换开关,以使用 Atlas App Services 规则进行数据访问。
除对嵌入式图表访问的用户进行身份验证外,您还可以使用应用程序服务的服务规则执行精细的数据访问控制。如果要启用规则强制执行,请将开关切换为 On。
启用此选项后,在检索图表数据时,图表将遵循集合定义的任何 App Services 规则。您可以使用此功能,限制对图表所示数据的访问,包括根据不同用户的角色展示不同的数据子集。
注意
此选项假定此图表的数据源使用与应用服务相同的 MongoDB database 和 collection。
使用此选项可能会对性能产生影响,因此如果不需要根据 App Services 规则来限制数据访问,则应将其关闭。
创建 Web 应用程序来显示图表
如果您已有可显示图表的应用,则可添加嵌入式图表。 如果没有,请继续执行其余步骤以创建新应用。
MongoDB 提供了一个预构建的示例应用,展示了如何使用嵌入式 SDK,通过 App Services 身份验证来显示嵌入式图表。
克隆 GitHub 存储库,并按照 Readme
文件中的说明开始使用该应用程序。您可以原封不动地运行该应用程序,也可以对其进行自定义,以使用之前创建的图表。
注意
该示例应用假定您的应用服务使用电子邮件/密码身份验证。 如果您的应用程序服务使用其他身份验证机制,则示例应用程序将需要额外的自定义。
自定义 Node.js 应用
您需要编辑的所有行都标有包含~REPLACE~
的注释。
输入您的 Charts 基本 URL
将现有 Charts 基本 URL 替换为要显示的图表的基本 URL。 您的 Charts 基本 URL 将显示在嵌入选项模式窗口中。 有关启用图表嵌入功能的详细说明,请参阅嵌入 SDK 。
const sdk = new ChartsEmbedSDK({ baseUrl: "https://charts-dev.mongodb.com/charts-test2-pebbp", // Optional: ~REPLACE~ with your Charts URL getUserToken: () => getRealmUserToken(client), });
请注意上述代码片段中的getRealmUserToken()
函数,该函数会从现有 Atlas App Services 身份验证会话中返回 JWT 。 getRealmUserToken()
必须从嵌入式 SDK 导入,如示例应用第 2 行的import
语句所示:
import ChartsEmbedSDK, { getRealmUserToken } from "@mongodb-js/charts-embed-dom";
您还可以在 HTML 页面中包含带有内联 Javascript 的嵌入式 SDK,如以下代码片段所示:
<script src="https://s3.amazonaws.com/stitch-sdks/js/bundles/4.6.0/stitch.js"></script> <script src="https://unpkg.com/@mongodb-js/charts-embed-dom"></script>
要在这种情况下使用getRealmUserToken()
函数,请从 SDK 中导入:
ChartsEmbedSDK.getRealmUserToken()
输入您的图表 ID
将现有图表 ID 替换为要显示的图表 ID。 您的图表 ID 显示在“嵌入选项”模式窗口中。 有关启用图表嵌入功能的详细说明,请参阅嵌入 SDK 。
const chart = sdk.createChart({ chartId: "a2e775e6-f267-4c2c-a65d-fbf3fad4a4f2", // Optional: ~REPLACE~ with your Chart ID });
完成应用自定义后,就可以运行了。