1

我正在使用节点 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>

这是输出。

在此处输入图像描述

4

0 回答 0