Auth0获取userId响应有效载荷



当用户使用auth0锁定的用户登录我的客户端时,我会得到一个iDtoken,但也是一个iDtokenpayload,看起来像这样:

idTokenPayload = {
  audience: "AUTH0CLIENTID",
  exp: 1494190538,
  iat: 1494154538,
  iss: "AUTH0DOMAIN"
  sub: "USERNAME"
};

可以在Auth0的数据库中返回用户ID,而不是sub字段中的用户名?

我想这样做的原因是我想保留用户的auth0 DB,并且在服务器端有一些配置文件,帖子,评论,评论等实体,这些实体具有userId列。现在,在对我实体的每个请求之前,我需要通过执行额外的请求来填充用户:let id = Profile.find("... where username === auth0.sub").getId();(当然是伪代码(。

使用C#锁定SDK,您可以在Auth0 Client中的LoginAsync方法呼叫后返回Auth0user。让我们称此变量auth0user。如果我查看auth0user.profile,则求解(如果您不使用C#,它是JSON对象(,它包含一个名为" Identities"的JSON数组。我的身份变量初始化看起来像:

var identities = (JArray)auth0User.Profile["identities"];

此数组包含与用户关联的所有身份提供者。如果像我一样,除了Auth0以外,您还没有附加任何其他登录,这里只有1个条目。此JSON数组中的每个对象都将包含一个"提供商"字符串和" user_id"字符串。如果提供商说" auth0",则来自auth0。由于我不使用FB或其他帐户类型,因此我不确定他们在说什么。这是我的C#代码以获取用户ID:

var identities = (JArray)auth0User.Profile["identities"];
        if (identities != null)
        {
            foreach (var identity in identities)
            {
                var provider = (string)identity["provider"];
                if (string.Equals(provider, "auth0"))
                {
                    UserID = (string)identity["user_id"];
                    break;
                }
            }
        }

我相信,这些都应提供标准,而无需添加任何规则或网络钩。本文应更详细地解释,并在JavaScript中提供示例:auth0归一化用户配置文件

相关内容

最新更新