使用 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;
}
我正在开发一个环回应用程序,它有两种类型的用户 — "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;
}