2015-11-03 42 views
0

我正在构建一个使用loopback框架进行登录和注册的API。 环回默认提供用于登录,注册和其他类似内容的型号User。在LoopBack中提供用户凭证的默认方式是username-password/email-password,但我想使用mobileNo-password/email-password作为用户的登录凭证。那我该怎么做?如何更改User模型中的默认credential选项?我可以在环回中更改用户模型凭证吗?

回答

1

可以实现这一目标有两种方式:如果User模型不使用username

  1. ,你可以用它来存储手机号码,mobileNo
  2. 您必须编辑user.js才能接受mobileNo字段作为登录凭据。 User.loginUser.normalizeCredentials用于登录过程,因此您可以像编码片段中提供的那样编辑它们。

注意:不要忘记添加mobileNouser.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; 
    } 
}` 
+0

谢谢!有效。 – Shubh

+0

还有一个问题,我如何跳过注册电子邮件(user.Create)? – Shubh

+0

从'user.json'中为'email'字段删除'required:true'。 –

相关问题