Я создаю систему регистрации входа в систему, используя nodejs и mysql, и я решил использовать паспорт js для аутентификации пользователя. Я также хэшировал пароли, используя bcrypt. До сих пор моя форма регистрации способна принимать входные данные из формы и сохранять их в таблице базы данных.
Поскольку я новичок в Node, я понятия не имею, как изменить код моей конфигурации аутентификации. файл, так что данные могут быть прочитаны из таблицы в базе данных и аутентифицироваться из. Ниже приводится файл конфигурации паспорта:
const LocalStrategy = require('passport-local').Strategy
const bcrypt = require('bcrypt')
function initialize(passport, getUserByEmail, getUserById) {
const authenticateUser = async (email, password, done) => {
const user = getUserByEmail(email)
if (user == null) {
return done(null, false, { message: 'No user with that email' })
}
try {
if (await bcrypt.compare(password, user.password)) {
return done(null, user)
} else {
return done(null, false, { message: 'Password incorrect' })
}
} catch (e) {
return done(e)
}
}
passport.use(new LocalStrategy({ usernameField: 'email' }, authenticateUser))
passport.serializeUser((user, done) => done(null, user.id))
passport.deserializeUser((id, done) => {
return done(null, getUserById(id))
})
}
module.exports = initialize
Вот ошибка, которую я получаю при входе с зарегистрированными учетными данными:
[nodemon] restarting due to changes...
[nodemon] starting `node server.js`
Database is connected!
New user is registered! INSERT INTO users (firstname, lastname, email, password) VALUES ('w', 'w', 'w@w', '$2b$10$bRcsJON33dZ/RCWsgNdp..G.dc112XaYYTWWiX3a7/YqnXWXE70Aa')
(node:61627) UnhandledPromiseRejectionWarning: ReferenceError: users is not defined
at /Users/vaidiklapalikar/Desktop/current project/server.js:30:20
at Strategy.authenticateUser [as _verify] (/Users/vaidiklapalikar/Desktop/current project/config/passport-config.js:6:18)
at Strategy.authenticate (/Users/vaidiklapalikar/Desktop/current project/node_modules/passport-local/lib/strategy.js:90:12)
at attempt (/Users/vaidiklapalikar/Desktop/current project/node_modules/passport/lib/middleware/authenticate.js:366:16)
at authenticate (/Users/vaidiklapalikar/Desktop/current project/node_modules/passport/lib/middleware/authenticate.js:367:7)
at Layer.handle [as handle_request] (/Users/vaidiklapalikar/Desktop/current project/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/vaidiklapalikar/Desktop/current project/node_modules/express/lib/router/route.js:137:13)
at checkNotAuthenticated (/Users/vaidiklapalikar/Desktop/current project/server.js:97:5)
at Layer.handle [as handle_request] (/Users/vaidiklapalikar/Desktop/current project/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/vaidiklapalikar/Desktop/current project/node_modules/express/lib/router/route.js:137:13)
(node:61627) 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(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:61627) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Насколько я понимаю, я не использую запрос на выборку для фактического чтения данных из таблицы и проверки их по паспорту. js. Однако я понятия не имею, как это сделать.