[英]Express App using PassportJS and dynamoDB locates to login page without error
I have a problem regarding my Express Login App. 我的快速登录应用程序有问题。 The whole app runs so far and i get the login page. 整个应用程序运行至今,我得到了登录页面。 This is not a dynamodb query problem. 这不是dynamodb查询问题。 I posted my login.js file below and can add more files if needed. 我在下面发布了我的login.js文件,并可以根据需要添加更多文件。 The problem is that i don't get any errors which could help me debugging. 问题是我没有得到任何可以帮助我调试的错误。 It "should" log errors to the console which it does not so i really can't figure out where the problem might be. 它“应该”将错误记录到控制台中,但事实并非如此,因此我真的不知道问题可能出在哪里。 Thanks for your help! 谢谢你的帮助!
This is the login.js file: 这是login.js文件:
const LocalStrategy = require("passport-local").Strategy;
const User = require("../models/user");
const bCrypt = require("bcrypt-nodejs");
const AWS = require("aws-sdk");
const dynamodb = new AWS.DynamoDB({
apiVersion: "2012-08-10",
//testing purposes
"region": "us-west-2",
"accessKeyId": "abcde",
"secretAccessKey": "abcde",
"endpoint": "http://localhost:8001"
});
module.exports = function(passport) {
passport.use("login", new LocalStrategy({
passReqToCallback: true
},
function(req,username,password,done) {
var queryParams = {
TableName: "users",
KeyConditionExpression: "username = :user",
ExpressionAttributeValues: {
//username entered in jade form
":user":{"S": username}
}
};
//querying dynamodb for username
dynamodb.query(queryParams,
function(err,data) {
if(err)
console.error(err,err.stack);
return done(err);
//if no users with said username in db
if(data.Count < 1) {
console.error(username + " not found in db");
return done(null, false, req.flash("message" , "user not found"));
}
//too many entries (admin's fault)
if(data.Count > 1){
console.error("error, more than one user with " + username + " in db");
return done(null,false,req.flash("message", "more than version of the username in the db"));
} else {
//only one user exists in db, query for username was successful
data.Items.forEach(function(item){
//checking if entered password is wrong
if(!isValidPassword(item.username, item.password)) {
console.error("invalid username - password combination");
return done(null,false,req.flash("message","invalid user-password combination"));
}
//successful login - user and password match
console.log("login successful");
return done(null,user);
});
}
});
}
));
var isValidPassword = function(user, password) {
return bCrypt.compareSync(password,user.password);
}
}
This looks like it's missing some brackets: 看起来好像缺少了一些括号:
if(err)
console.error(err,err.stack);
return done(err);
I assume it needs to be: 我认为它必须是:
if (err) {
console.error(err,err.stack);
return done(err);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.