Я пытаюсь создать форму входа, используя NodeJS, Express и SQL Сервер. Я сталкиваюсь с проблемами с процессом аутентификации. Ниже приведена форма.
Форма:
<form action="/auth" method="POST">
<input type="text" name="uname" placeholder="Username" required="">
<input type="password" name="pass" placeholder="Password" required="">
<input type="submit">
</form>
Я уверен, что соединение с базой данных работает, поскольку я пытался просто извлечь информацию из базы данных и успешно.
app. js file:
var sql = require("mssql");
var express = require("express");
var session = require("express-session");
var bodyParser = require("body-parser");
var path = require("path");
var dbconfig = {
server: "Server",
database: "Test",
user: "########",
password: "####################",
port: 1433,
options : {
encrypt: false
}
};
var app = express();
app.use(session({
secret: 'Secret',
resave: true,
saveUninitalized: true
}));
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
app.get('/', function(request, response) {
response.sendFile(path.join(__dirname + '/login.html'));
});
app.post('/auth', function(request, response) {
try {
var uname = request.body.uname;
var pass = request.body.pass;
console.log(uname);
console.log(pass);
if (uname && pass) {
var conn = new sql.ConnectionPool(dbconfig);
conn.connect((function() {
var thisConn = conn;
var req = new sql.Request(thisConn);
return function() { //connect callback
req.query("Select * from Admin where username = ? AND password = ?", [uname, pass],
(function() {
var req = request;
var resp = response;
var conn = thisConn;
return function(error, results, recordset) { // query callback
if (results.length > 0) {
req.session.loggedin = true;
req.session.username = uname;
resp.redirect('/home');
} else {
response.send('Username and/or Password not found');
}
conn.close();
resp.end();
};
})());
};
})());
} else {
response.send('Please enter Username and Password');
}
} catch (err) {
console.error('SQL error', err);
}
});
Я получаю сообщение об ошибке синтаксиса. Я думал, что request.body была проблема, пока я console.log (uname) не доказал, что переменные содержат желаемое имя пользователя и пароль.
Ошибка:
test
test
(node:24386) UnhandledPromiseRejectionWarning: RequestError: Incorrect syntax near '?'.
at handleError (///nodeconSQL/node_modules/mssql/lib/tedious/request.js:366:15)
at Connection.emit (events.js:193:13)
at Parser.tokenStreamParser.on.token (///nodeconSQL/node_modules/tedious/lib/connection.js:832:12)
at Parser.emit (events.js:193:13)
at Parser.parser.on.token (///nodeconSQL/node_modules/tedious/lib/token/token-stream-parser.js:37:14)
at Parser.emit (events.js:193:13)
at addChunk (///nodeconSQL/node_modules/readable-stream/lib/_stream_readable.js:298:12)
at readableAddChunk (///nodeconSQL/node_modules/readable-stream/lib/_stream_readable.js:280:11)
at Parser.Readable.push (///nodeconSQL/node_modules/readable-stream/lib/_stream_readable.js:241:10)
at Parser.Transform.push (///nodeconSQL/node_modules/readable-stream/lib/_stream_transform.js:139:32)
(node:24386) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)