Стек MEAN linnovate использует Passport.js для его аутентификации. Паспорт использует различные стратегии аутентификации. Одна из этих стратегий - это имя пользователя и пароль, которые они называют LocalStrategy.
Вот один из образцов из Passportjs-Local Github Examples Page
Шаг 1: Требуют паспорт
Сначала вам потребуется модуль после выполнения НПМ установить паспорт
var passport = require('passport');
Шаг 2: Настроить функцию «Проверить»
Используйте LocalStrategy в паспорте. Стратегии в паспорте требуют функции verify
, которые принимают учетные данные (в данном случае, имя пользователя и пароль) и вызывают обратный вызов с пользовательским объектом. В реальном мире это будет запрашивать базу данных; однако в этом примере мы используем запеченный набор пользователей.
passport.use(new LocalStrategy(
function(username, password, done) {
// Find the user by username. If there is no user with the given
// username, or the password is not correct, set the user to `false` to
// indicate failure and set a flash message. Otherwise, return the
// authenticated `user`.
findByUsername(username, function(err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Unknown user ' + username });
}
if (user.password != password) {
return done(null, false, { message: 'Invalid password' });
}
return done(null, user);
})
});
}
));
Шаг 3: Инициализировать паспорт на приложении
Вы должны сказать Экспресс, что вы будете использовать паспорт и что он будет управлять сессиями для вас. Это делается с помощью app.use() во время настройки приложения.
app.use(passport.initialize());
app.use(passport.session());
Шаг 4: Настройка Middleware на входе URI
Далее нам нужно создать метод, который будет принимать, когда пользователь пытается войти в приложение, используя при помощи POST-ки на определенный URI , Это будет выглядеть так.
// POST /login
// Use passport.authenticate() as route middleware to authenticate the
// request. If authentication fails, the user will be redirected back to the
// login page. Otherwise, the primary route function function will be called,
// which, in this example, will redirect the user to the home page.
//
// curl -v -d "username=bob&password=secret" http://127.0.0.1:3000/login
app.post('/login',
passport.authenticate('local', { failureRedirect: '/login', failureFlash: true }),
function(req, res) {
res.redirect('/');
});
Шаг 5: Настройка Sessions Вы, возможно, придется создать свой собственный сериализации для объектов пользователей, которые в настоящее время хранятся в сессиях. Это делается со следующими
// Passport session setup.
// To support persistent login sessions, Passport needs to be able to
// serialize users into and deserialize users out of the session. Typically,
// this will be as simple as storing the user ID when serializing, and finding
// the user by ID when deserializing.
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
findById(id, function (err, user) {
done(err, user);
});
});
есть easyauth для фб, твиттер и т.д. Логин: https://github.com/bnoguchi/everyauth –