Auth0 Lock 中的用户注册事件

Posted

技术标签:

【中文标题】Auth0 Lock 中的用户注册事件【英文标题】:User signup event in Auth0 Lock 【发布时间】:2017-03-08 02:41:37 【问题描述】:

身份验证成功后会发出'authenticated' 事件。

lock.on('authenticated', function(authResult)  );

但是有什么方法可以检测新用户何时注册您的应用程序,或者我是否必须将用户存储在我的数据库中并在每次用户进行身份验证时检查它?

【问题讨论】:

【参考方案1】:

Auth0 Lock 不会触发用户注册的特定事件。

但是,您可以在 custom rule 上检测到这一点,并使用此元数据丰富用户配置文件。有一个signup sample rule 说明了这种可能性

function (user, context, callback) 
    user.app_metadata = user.app_metadata || ;

    // short-circuit if the user signed up already
    if (user.app_metadata.signed_up) return callback(null, user, context);

    // execute first time login/signup logic here
    // ...

    // update application metadata so that signup logic is skipped on subsequent logins
    user.app_metadata.signed_up = true;
    auth0.users.updateAppMetadata(user.user_id, user.app_metadata)
        .then(function () 
            callback(null, user, context);
        )
        .catch(function (err) 
            callback(err);
        );

这使用app_metadata 来存储与用户相关的信息,以便您可以跟踪您已经为哪些用户执行了他们的附加首次注册逻辑。

请记住,规则将在身份验证管道的服务器端执行,因此如果您要实现的逻辑需要用户交互,您可以通过执行以下步骤来实现类似的效果:

    登录应用后获取用户个人资料 如果没有设置标志,则假定用户刚刚注册并执行您的自定义逻辑 完成自定义逻辑后,更新用户 app_metadata 以设置注册标志(您可以通过 Auth0 Management API 在服务器端应用程序逻辑上执行此操作)

【讨论】:

检查 logins_count 也是一种选择。如果大于 0,则用户已经注册。我知道,这个问题很老,但它可能对某人有帮助。 我已经决定收听锁定上的 "signup ready""sigin ready" 事件,并以此为基础来决定我是否认为用户已注册 - 相关 PR github.com/auth0/lock/pull/1036/files

以上是关于Auth0 Lock 中的用户注册事件的主要内容,如果未能解决你的问题,请参考以下文章

用户注册后获取 auth0 用户信息

如何使用 Auth0 Lock 从响应对象中获取用户名?

在 Android 的 Auth0 Lock 中获取 403 不允许的用户代理

如何使用 HashLocationStrategy 和 Auth0 Lock 小部件进行用户登录

配置 Auth0 工作流的问题

Auth0 邮件确认,如何优雅地处理注册