Sails js,使用电子邮件或用户名查找用户

苏米特乔汉

我正在尝试使用用户名或电子邮件登录用户,即用户可以输入电子邮件或密码并且应该能够登录。但是,到目前为止我能够使用其中之一。

这是迄今为止尝试过的代码。

authenticate: function (req, res) {
    var username =  req.body.username;
    var email = req.body.email;
    users.findOne({ 
            or: [
                {username: username},
                {email: email}
            ]
    }).exec(function(err, user) {
        console.log(user);
        if (err) {
            return res.json({err});
        } else if (!user) {
            var err = new Error('User not found.');
            err.status = 401;
            return res.json({err});
        } else {
            require('bcrypt').compare(req.body.password, user.password, function(err, result) {
                if(result === true) {
                    return res.json({user});
                } else {
                    return res.json({err});
                }
            });
        }
    });
}
阿布思诺特

尽管风帆水线不如直接访问任何一个数据库那么强大,但它可以在这里做你想做的事情等等。文档给出了什么是可能的一些很好的例子。

我不知道你是如何将用户名或电子邮件传递给你的请求对象的,但这样的事情应该可以工作:

authenticate: function(req, res) {
    var username = req.param('username'); // or however you get this
    var email = req.param('email'); // or however you get this
    Users.findOne({
        or: [{username: username}, {email: email}]
    }).exec(function(err, user) {
        // handle the error, or make use of found user...
    });
}

您还可以处理用户向您提供可以是用户名或电子邮件的输入的情况...

var identifier = req.param('identifier'); // could be a username or an email

然后将您的or数组修改为:

or: [{username: identifer}, {email: identifier}]

如果你使用action 2风格,你可以做```

var identifier = inputs.identifier;
    var userRecord = await User.findOne({
      or : [{username: identifier}, {email: identifier}]
    });

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Node.js中使用电子邮件或用户名通过MongoDB登录

允许用户使用电子邮件或用户名使用 Passport、LocalStrategy 登录

在Django中使用电子邮件地址或用户名登录用户

允许用户使用电子邮件或用户名(AspNet.Identity)登录

接缝。使用电子邮件或用户名登录

使用电子邮件或用户名登录 Fortify Laravel 8

在ASP.NET Core中支持使用电子邮件或用户名登录同一用户

使用电子邮件而不是用户名登录

使用电子邮件ID从Active Directory查找用户名

如果在ASP.NET Core MVC中找不到用户,则使用电子邮件或用户名登录的用户将为空

确保既未使用电子邮件也未使用用户名

Graphql通过用户名或电子邮件查找用户

OAuth2:使用电子邮件(而不是用户名)进行身份验证

如何在djangoreostframework-simplejwt中使用电子邮件代替用户名?

Laravel使用电子邮件代替用户名登录

ASP.NET Identity 2电子邮件和用户名的分隔,并使用电子邮件登录

使用电子邮件作为用户名字段的自定义用户模型的登录用户

如何在Django Rest Framework中使用电子邮件而不是用户名注册用户

同时拥有用户名和电子邮件,但在django-rest-auth中使用电子邮件对用户进行身份验证

多租户应用程序的身份,允许重复的电子邮件或用户名

设计-通过电子邮件或用户名登录

AWS Amplify + Cognito:创建没有用户名的账户/使用电子邮件代替用户名?

在PHP的LDAP身份验证中,如何使用电子邮件代替用户名?

使用电子邮件地址作为唯一标识符而不是Shiro for Grails的用户名

使用+或。在电子邮件地址的用户名部分

“电子邮件”验证规则使Sails服务器崩溃-带Sails.js的Mongo

使用节点邮件SMTP传输时Sails.js没有收到电子邮件

使用node.js和mysql验证输入是用户名还是电子邮件

通过用户名或一个字段的电子邮件查找用户