您好我正在使用lambda函数检查在本地运行的mongodb中的用户名和密码。
module.exports.handler = (event, context, callback) => {
console.log('login');
const { username, password } = JSON.parse(event.body);
console.log("username--->",username);
console.log("password-->",password)
try {
// Authenticate user
const user = users.login(username, password);
console.log("----->inside login handler!!!",user);
这是我发送值来检查db
的地方login = function (username, password) {
console.log("--------inside login of users",username,password)
userRegister.findOne({
username : username,
password : password
}).then(function(err,data){
if (err) {
console.log("---------------err", err)
return _.omit(err);
}
else {
console.log("---------------data", data)
return _.omit(data);
}
})
}
该值未返回任何内容,即时取消定义! 我觉得findOne不起作用了!
提前致谢
答案 0 :(得分:1)
将find与用户提供的值一起使用会使您容易受到注射,例如:
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
void largerThanN(int a[], int size, int n);
int main()
{
int size = 3,
n = 1,
arr[3] = { 0,5,6 };
largerThanN(arr, size, n);
}
void largerThanN(int a[], int size, int n)
{
for (int i = 0; i < size; i++)
{
if (a[i] > n)
{
cout << a[size] << " is greater than n " << endl;
}
}
}
我会使用像passport本地身份验证这样的第三方。
您至少可以通过用户名找到该用户,然后使用&#39; ===&#39;验证用户名和密码。
至于findOne返回undefined,尝试使用像Robomongo这样的工具执行相同的查询,你的语法似乎是正确的。
答案 1 :(得分:0)
为什么要匹配密码?在findOne中,我相信您应该在将密码存储到数据库之前对其进行哈希处理。如果不是我天堂般的建议这样做。使用散列库找到文档后匹配密码
login = function (username, password) {
console.log("--------inside login of users",username,password)
userRegister.findOne({
username : username // Remove password from here
}).then(function(err,data){
if (err) {
console.log("---------------err", err)
return _.omit(err);
}
else {
// Match password here
console.log("---------------data", data)
return _.omit(data);
}
})
}