【问题标题】:can i change user model credentials in loopback?我可以在环回中更改用户模型凭据吗?
【发布时间】:2015-11-03 21:36:53
【问题描述】:

我正在使用环回框架构建用于登录和注册的 API。 Loopback 默认提供模型User 用于登录、注册和其他类似的东西。在 LoopBack 中提供用户凭据的默认方式是 username-password/email-password 但我想使用 mobileNo-password/email-password 作为用户的登录凭据。那么我该怎么做呢?如何更改 User 模型中的默认 credential 选项?

【问题讨论】:

    标签: loopbackjs strongloop


    【解决方案1】:

    您可以通过两种方式实现:

    1. 如果User模型中不使用username字段,您可以使用它来存储手机号码,mobileNo
    2. 您必须编辑user.js 以接受mobileNo 字段作为登录凭据。 User.loginUser.normalizeCredentials 用于登录过程,因此您可以像代码 sn-p 中提供的那样编辑它们。

    注意:不要忘记将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;
        }
    }`
    

    【讨论】:

    • 还有一个问题,我如何在注册时跳过电子邮件(user.Create)?
    • user.json 中为email 字段删除required: true
    猜你喜欢
    • 1970-01-01
    • 2020-04-21
    • 2012-08-12
    • 2014-09-20
    • 2012-01-22
    • 2016-03-10
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多