我正在使用节点 js 创建登录和注册系统。我正在使用 mysql 作为后端。我正在使用护照身份验证策略。当我输入有效的登录信息以验证用户身份时,我收到以下错误..
at pass (C:\Users\Khundokar Nirjor\Desktop\nodejs-mysql-login-and-signup\nodejs-mysql-login-and-signup-master\node_modules\passport\lib\authenticator.js:281:19)
at serialized (C:\Users\Khundokar Nirjor\Desktop\nodejs-mysql-login-and-signup\nodejs-mysql-login-and-signup-master\node_modules\passport\lib\authenticator.js:286:7)
at C:\Users\Khundokar Nirjor\Desktop\nodejs-mysql-login-and-signup\nodejs-mysql-login-and-signup-master\config\passport.js:13:9
at pass (C:\Users\Khundokar Nirjor\Desktop\nodejs-mysql-login-and-signup\nodejs-mysql-login-and-signup-master\node_modules\passport\lib\authenticator.js:294:9)
at Authenticator.serializeUser (C:\Users\Khundokar Nirjor\Desktop\nodejs-mysql-login-and-signup\nodejs-mysql-login-and-signup-master\node_modules\passport\lib\authenticator.js:299:5)
at SessionManager.logIn (C:\Users\Khundokar Nirjor\Desktop\nodejs-mysql-login-and-signup\nodejs-mysql-login-and-signup-master\node_modules\passport\lib\sessionmanager.js:14:8)
at IncomingMessage.req.login.req.logIn (C:\Users\Khundokar Nirjor\Desktop\nodejs-mysql-login-and-signup\nodejs-mysql-login-and-signup-master\node_modules\passport\lib\http\request.js:50:33)
at Strategy.strategy.success (C:\Users\Khundokar Nirjor\Desktop\nodejs-mysql-login-and-signup\nodejs-mysql-login-and-signup-master\node_modules\passport\lib\middleware\authenticate.js:248:13)
at verified (C:\Users\Khundokar Nirjor\Desktop\nodejs-mysql-login-and-signup\nodejs-mysql-login-and-signup-master\node_modules\passport-local\lib\strategy.js:83:10)
at Query.<anonymous> (C:\Users\Khundokar Nirjor\Desktop\nodejs-mysql-login-and-signup\nodejs-mysql-login-and-signup-master\config\passport.js:79:24)
这是我的 passport.js 代码。
var LocalStrategy = require('passport-local').Strategy;
var mysql = require('mysql');
var bcrypt = require('bcrypt-nodejs');
var dbconfig = require('./database');
var connection = mysql.createConnection(dbconfig.connection);
connection.query('USE ' + dbconfig.database);
module.exports = function(passport) {
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
connection.query("SELECT * FROM users WHERE id = ? ",[id], function(err, rows){
done(err, rows[0]);
});
});
passport.use(
'local-signup',
new LocalStrategy({
usernameField : 'username',
passwordField : 'password',
passReqToCallback : true
},
function(req, username, password, done) {
connection.query("SELECT * FROM users WHERE username = ?",[username], function(err, rows) {
if (err)
return done(err);
if (rows.length) {
return done(null, false, req.flash('signupMessage', 'That username is already taken.'));
} else {
var newUserMysql = {
username: username,
password: bcrypt.hashSync(password, null, null)
};
var insertQuery = "INSERT INTO users ( username, password ) values (?,?)";
connection.query(insertQuery,[newUserMysql.username, newUserMysql.password],function(err, rows) {
newUserMysql.id = rows.insertId;
return done(null, newUserMysql);
});
}
});
})
);
passport.use(
'local-login',
new LocalStrategy({
usernameField : 'username',
passwordField : 'password',
passReqToCallback : true
},
function(req, username, password, done) {
connection.query("SELECT * FROM users WHERE username = ?",[username], function(err, rows){
if (err)
return done(err);
if (!rows.length) {
return done(null, false, req.flash('loginMessage', 'bulunamadi.'));
}
if (!bcrypt.compareSync(password, rows[0].password))
return done(null, false, req.flash('loginMessage', 'yanlis parola.'));
return done(null, rows[0]);
});
})
);
};
这是我的 login.ejs
<!DOCTYPE html>
<html>
<head>
<title>Giriş yap</title>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css"> <!-- load bootstrap css -->
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css"> <!-- load fontawesome -->
<style>
body { padding-top:80px; }
</style>
</head>
<body>
<div class="container" >
<div class="col-sm-6 col-sm-offset-3">
<h1><span class="fa fa-sign-in" ></span> Login</h1>
<% if (message.length > 0) { %>
<div class="alert alert-danger"><%= message %></div>
<% } %>
<!-- LOGIN FORM -->
<form action="/login" method="post" >
<div class="form-group">
<input type="text" class="form-control" placeholder="Username" name="username">
</div>
<div class="form-group">
<input type="password" class="form-control" placeholder="Password" name="password">
</div>
<button type="submit" class="btn btn-warning btn-lg">login</button>
</form>
<hr>
<p>new user <a href="/signup">register</a></p>
</div>
</div>
</body>
</html>
这是输出。
