我正在使用loopback框架构建用于登录和注册的API。
默认情况下,Loopback为登录,注册和其他类似的东西提供模型User
。在LoopBack中提供用户凭据的默认方式是用户名密码/电子邮件密码,但我想使用mobileNo-password / email-password作为用户的登录凭据。那我该怎么办呢?如何更改credential
模型中的默认User
选项?
答案 0 :(得分:1)
您可以通过两种方式实现这一目标:
username
模型中使用User
字段,您可以使用它来存储手机号码mobileNo
。user.js
以接受mobileNo
字段作为登录凭据。 User.login
和User.normalizeCredentials
用于登录过程,因此您可以按照代码段中的说明对其进行编辑。 注意:不要忘记将mobileNo
添加到user.json
User.normalizeCredentials方法
`User.normalizeCredentials = function(credentials, realmRequired, realmDelimiter) {
var query = {};
credentials = credentials || {};
if (!realmRequired) {
if (credentials.email) {
query.email = credentials.email;
} else if (credentials.mobileNo) {
query.mobileNo = credentials.mobileNo;
}
} else {
if (credentials.realm) {
query.realm = credentials.realm;
}
var parts;
if (credentials.email) {
parts = splitPrincipal(credentials.email, realmDelimiter);
query.email = parts[1];
if (parts[0]) {
query.realm = parts[0];
}
} else if (credentials.mobileNo) { //added mobileNo.
parts = splitPrincipal(credentials.mobileNo, realmDelimiter);
query.mobileNo = parts[1];
if (parts[0]) {
query.realm = parts[0];
}
}
}
return query;
};`
User.login方法
`User.login = function(credentials, include, fn) {
.
.
.
.
.
if (!query.email && !query.mobileNo) {
var err2 = new Error('Mobile number or email is required');
err2.statusCode = 400;
err2.code = 'MOBILE_NUMBER_EMAIL_REQUIRED';
fn(err2);
return fn.promise;
}
}`