回环护照登录

4
我想使用Loopback passport通过第三方登录我的应用程序。然而,我不希望任何人都可以成功地通过第三方进行身份验证,我只想允许已经配置为用户访问的电子邮件帐户(即,我想从这个提供者中列出白名单的人员)。
这是可能的吗?几乎所有我看到的Loopback passport和OAuth以及类似策略的示例似乎都假定我愿意让每个Google / Facebook用户访问我的应用程序,但这并非我的情况。
2个回答

2

loopback-example-passport仓库扩展了一些基础模型(用户、令牌、用户身份和用户凭证)。

你可以创建一个新文件 /common/models/user-identity.js,它可以监听新身份的创建。在这里尝试像这样做:

module.exports = function(userIdentity) {
  userIdentity.observe('before save', function(context, next) {
    if (context.instance) {
      console.log(context.instance.profile._json);
    }
  }
}

context.instance.profile._json中,您可以观察到新创建用户的详细信息,并在需要时修改或删除它。


你好 @J3Y,你的回答非常有趣,我有一个问题。如果我需要重定向用户以通知他们需要一个帐户才能登录,我应该如何发送重定向?因为我没有访问 res 对象的权限。谢谢。 - Raul Vargas Muñoz
@RaulVargasMuñoz 你可以尝试使用customCallback选项来实现一些功能,虽然我认为这个选项的文档不是很好。请查看loopback-component-passport的源代码。您可以在提供程序的护照配置选项中提供自定义回调,然后根据需要进行重定向。defaultCallback可以访问res对象。 - J3Y

0

我几周前深入研究了第三方认证,并意识到现有的文档和loopback-example-passport对于我的情况来说不足以阅读。例如,现有的loopback-component-passport无法与自定义用户模型一起使用。

我认为您可以在UserIdentity模型上执行操作钩子,并使用find()和filter比较UserIdentity.profile.emails数组中的电子邮件和用户模型电子邮件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接