В веб-разработке аутентификация пользователей является важнейшим аспектом создания безопасных приложений. Passport — это популярное промежуточное ПО для аутентификации для Node.js, которое обеспечивает гибкую и простую в использовании структуру для аутентификации пользователей. В этой статье мы рассмотрим пошаговые методы реализации локальной стратегии входа и регистрации с помощью Passport.
Предварительные требования:
Прежде чем мы углубимся в детали реализации, убедитесь, что у вас настроены следующие предварительные условия:
- На вашем компьютере установлены Node.js и npm.
- Базовые знания JavaScript и концепций веб-разработки.
- Знакомство с Express.js, популярной платформой веб-приложений для Node.js.
Шаг 1. Настройка проекта Node.js
Сначала создайте новый каталог для своего проекта и перейдите к нему в своем терминале. Затем инициализируйте новый проект Node.js, выполнив следующую команду:
npm init -y
Шаг 2. Установите зависимости
Чтобы использовать Passport и его локальную стратегию, вам необходимо установить необходимые зависимости. В каталоге вашего проекта выполните следующую команду:
npm install express passport passport-local bcrypt
Шаг 3. Настройка Passport
Создайте новый файл с именем passport-config.jsи добавьте следующий код для настройки Passport:
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const bcrypt = require('bcrypt');
// Replace this with your user model
const User = require('./models/user');
passport.use(
new LocalStrategy({ usernameField: 'email' }, (email, password, done) => {
User.findOne({ email: email }, (err, user) => {
if (err) return done(err);
if (!user) return done(null, false, { message: 'Incorrect email.' });
bcrypt.compare(password, user.password, (err, result) => {
if (err) return done(err);
if (!result) return done(null, false, { message: 'Incorrect password.' });
return done(null, user);
});
});
})
);
Шаг 4. Реализация маршрутов для входа и регистрации
Создайте новый файл с именем routes.jsи добавьте следующий код для определения маршрутов для входа и регистрации:
const express = require('express');
const passport = require('passport');
const router = express.Router();
router.post('/login', passport.authenticate('local'), (req, res) => {
// Handle successful login
res.json({ message: 'Login successful!' });
});
router.post('/register', async (req, res) => {
try {
const { email, password } = req.body;
const hashedPassword = await bcrypt.hash(password, 10);
// Replace this with your user model
const user = new User({ email, password: hashedPassword });
await user.save();
res.json({ message: 'Registration successful!' });
} catch (error) {
res.status(500).json({ message: 'Error registering user.' });
}
});
module.exports = router;
Шаг 5. Настройка сервера Express.js
Создайте новый файл с именем server.jsи добавьте следующий код для настройки сервера Express.js:
const express = require('express');
const passport = require('passport');
const session = require('express-session');
const app = express();
// Replace this with your user model
const User = require('./models/user');
const routes = require('./routes');
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(session({
secret: 'your-secret-key',
resave: false,
saveUninitialized: false,
}));
app.use(passport.initialize());
app.use(passport.session());
app.use('/', routes);
app.listen(3000, () => {
console.log('Server started on port 3000');
});
Шаг 6. Запустите приложение
Чтобы запустить приложение, выполните в терминале следующую команду:
node server.js
В этой статье мы узнали, как реализовать локальную стратегию входа и регистрации с помощью Passport в проектах Node.js и Express.js. Следуя пошаговому руководству, вы сможете создать безопасную систему аутентификации для своего веб-приложения. Не забудьте настроить код в соответствии с вашими конкретными требованиями и моделью пользователя.