【发布时间】:2020-06-26 11:30:52
【问题描述】:
我正在制作一个登录系统并使用 bcrypt 来散列密码。但是现在当我尝试登录时,我收到了这个错误,提示 ReferenceError: hash is not defined。如果有人能帮助我并告诉我在哪里以及如何声明哈希,我将不胜感激。 这是我的 login.js 代码。
var mysql = require('mysql');
var express = require('express');
var session = require('express-session');
var bodyParser = require('body-parser');
var bcrypt= require('bcrypt');
var path = require('path');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'sahoolat1',
database : 'fyp_sahoolat'
});
var app = express();
app.use(session({
secret: 'secret',
resave: true,
saveUninitialized: true
}));
app.use(bodyParser.urlencoded({extended : true}));
app.use(bodyParser.json());
app.get('/', function(request, response) {
response.sendFile(path.join(__dirname + '/welcome.html'));
});
app.post('/auth', function(request, response) {
var number = request.body.number;
var password = request.body.pwd;
if (number && password) {
bcrypt.compare(password, hash, function(err, result) {
connection.query('SELECT fyp_helpers.Mobile_number AS number FROM fyp_helpers WHERE Mobile_number = ? AND Password = ? UNION SELECT fyp_employers.Employer_Contact AS number FROM fyp_employers WHERE Employer_Contact = ? AND Employer_Password = ?', [number, password, number, password], function(error, results, fields) {
if (error) {
console.error("An error occurred:", error);
response.send('Oops, something went wrong!');
} else if (results.length > 0) {
request.session.loggedin = true;
request.session.number = number;
response.redirect('/home');
} else {
response.send('Incorrect Username and/or Password!');
}
response.end();
});
});
}
else {
response.send('Please enter Username and Password!');
response.end();
}
});
app.get('/home', function(request, response) {
if (request.session.loggedin) {
response.send('Welcome back, ' + request.session.number + '!');
} else {
response.send('Please login to view this page!');
}
response.end();
});
app.listen(3000);
这是完全错误:
ReferenceError: hash is not defined
at C:\Users\palwasha\sahoolat-master\login.js:29:31
at Layer.handle [as handle_request] (C:\Users\palwasha\sahoolat-master\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\palwasha\sahoolat-master\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\palwasha\sahoolat-master\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\palwasha\sahoolat-master\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\palwasha\sahoolat-master\node_modules\express\lib\router\index.js:281:22
at Function.process_params (C:\Users\palwasha\sahoolat-master\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\palwasha\sahoolat-master\node_modules\express\lib\router\index.js:275:10)
at jsonParser (C:\Users\palwasha\sahoolat-master\node_modules\body-parser\lib\types\json.js:101:7)
at Layer.handle [as handle_request] (C:\Users\palwasha\sahoolat-master\node_modules\express\lib\router\layer.js:95:5)
【问题讨论】:
-
哈希变量未定义。
-
@pramodsingh 如何定义它或从雇主和助手表中获取密码,以便从 botyh 匹配,无论匹配到哪里,都应该登录
-
您可能在使用某个 KEY 保存到 DB 之前加密了您的密码。当您从数据库中检索密码时,应用相同的密钥进行解密。
-
@pramodsingh 是的,我先加密然后保存
标签: javascript node.js undefined undefined-variable