使用 Loopback 使用一次性令牌登录用户

Log in user with one-time token using Loopback

我正在开发一个环回应用程序,它有两种类型的用户 — "Supervisor" 可以在应用程序内自行注册,"Subordinate" 只能由主管注册(和与那个人有关)。主管使用电子邮件和密码登录,就像环回中的基本用户模型一样,但下属使用基于日期哈希生成的电子邮件和密码。这是为了确保下属记录不与个人身份数据相关联,并且是应用程序的要求。下属可以使用生成的凭据登录系统,但跟踪伪随机信息是不可行的。

Loopback 中的用户是否有任何方法可以获得访问令牌(或者更好的是,生成的令人难忘的密码),该令牌可以用来代替用户名和密码来登录从属用户类型?这似乎与使用令牌登录以重置密码的功能类似,但我不确定如何使用可重复使用的密码短语来执行此操作。

据我了解您的 post,'Supervisor' 用户类型有特定的电子邮件和密码,另一种用户类型 'subordinate' 没有特定的电子邮件密码。

UserIdentity模型的登录方法中也有类似的情况。如果用户使用社交网络帐户登录系统,则 UserIdentity 模型会为此匿名用户创建一个帐户。

例如,如果用户使用 google 帐户登录。然后模型使用用户的 google id(模型中的外部 id),根据用户 id 创建用户名。

检查模型中的 profileToUser 方法。登录方法使用 profileToUser 方法。您可以找到对您的场景有用的东西。

function profileToUser(provider, profile) {
  // Let's create a user for that
  var email = profile.emails && profile.emails[0] && profile.emails[0].value;
  if (!email) {
    // Fake an e-mail
    email = (profile.username || profile.id) + '@loopback.' +
          (profile.provider || provider) + '.com';
  }
  var username = provider + '.' + (profile.username || profile.id);
  var password = utils.generateKey('password');
  var userObj = {
    username: username,
    password: password,
    email: email
  };
  return userObj;
}