【问题标题】:How are users identified in LaunchDarkly?LaunchDarkly 如何识别用户?
【发布时间】:2022-02-18 20:32:30
【问题描述】:

我正在使用 LaunchDarkly 进行功能标志管理,但我不知道从哪里获取当前用户的密钥。这是他们的 React SDK 的 LD 文档中的一个示例:

import { withLDProvider } from 'launchdarkly-react-client-sdk';
export default withLDProvider({
  clientSideID: 'your-client-side-id',
  user: {
    "key": "aa0ceb",
    "name": "Grace Hopper",
    "email": "gracehopper@example.com"
  },
  options: { /* ... */ }
})(YourApp);

我如何得到这个key?密钥和clientSideID有什么区别?

【问题讨论】:

    标签: javascript reactjs launchdarkly feature-flags


    【解决方案1】:

    LaunchDarkly 文档对使用此工具所需的各种键有点混乱。

    SDK 密钥

    clientSideID 是 SDK 密钥(客户端)。您可以从 LaunchDarkly Web 界面获取它。项目中的整个环境都是一样的,所以如果你使用React SDK或者JS SDK,每个客户端都是一样的。

    要获取它,请转到app.launchdarkly.com/YOUR_PROJECT,单击右上角的搜索图标。您将看到带有按钮的提示。您需要点击按钮Copy SDK key for the current development => Client-side ID。请注意,如果您有dev 环境和prod 环境,则它们的密钥将不同。或者,您可以转到 Account settings -> Projects 查看所有 SDK 密钥。

    See the details about different kinds of SDK keys

    访问令牌

    如果您不使用 SDK 但使用 REST API,则需要访问令牌。您可以从 LaunchDarkly Web 界面获取它,方法是转到 Account settings -> Authorization。您可以拥有多个访问令牌。

    用户密钥

    用户密钥唯一标识您的应用程序的用户。您负责生成它。 According to the documentation,LaunchDarkly 界面无法预先创建用户。相反,当您提供新的用户密钥时,LaunchDarkly 会动态注册用户。

    对于您的应用程序的不同注册用户,用户密钥是不同的。使用什么作为用户唯一密钥取决于您,但您有责任将其存储在数据库中并始终为同一用户提供相同的密钥。

    • 一种选择是使用经过身份验证的用户的电子邮件。但是,如果您的系统允许用户更改他们的电子邮件,那可能不是最佳选择。
    • 系统中的每个用户都有自己的用户 ID。您可以使用它,因为它不随时间而变化并且是独一无二的。
    • 您也可以在创建用户时通过generating guid or uuid创建用户lauchdarkly密钥。您需要将其保存在数据库中。

    当用户登录时,您需要初始化 LaunchDarkly SDK 并提供相应的密钥。

    在反应中:

    import { withLDProvider } from 'launchdarkly-react-client-sdk';
    export default withLDProvider({
      clientSideID: 'your-client-side-id',
      user: {
        "key": getCurrentUser().id,
        "name": getCurrentUser().name,
        "email": getCurrentUser().email
      },
      options: { /* ... */ }
    })(YourApp);
    

    在纯 JavaScript 中:

    const user = {
        "key": getCurrentUser().id,
        "name": getCurrentUser().name,
        "email": getCurrentUser().email
    };
    const ldclient = LDClient.initialize('YOUR_CLIENT_SIDE_SDK', user, options = {
      allAttributesPrivate: true
    });
    

    这里的getCurrentUser() 是为您的应用程序获取经过身份验证的用户详细信息的函数。

    当用户注销时,请确保该用户的密钥不可用。 in the documentation of LaunchDarkly 描述了对匿名用户的跟踪,可以为此使用不同的策略。管理匿名用户的最简单方法是不发送用户密钥。

    【讨论】:

      猜你喜欢
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 2011-11-03
      • 2012-01-27
      • 2016-07-09
      • 1970-01-01
      相关资源
      最近更新 更多