Как правильно сделать авторизацию?
Вот банальная аутентификация. 
User - модель mongodb
Сразу скажу, пароль нужно шифровать - например (bcrypt), соотвественно выбирать не по username и password, а по username, а потом уже сравнивать зашифрованный пароль с полученным из post запроса. 
Так как это пример аутентификации json, то вместо success: true, нужно слать токен, но это вам делать, примеров в гугле тонны.
Насчет хочу все сделать сам, не нужно так говорить, а потом спрашивать банальные вещи, которых - опять же, в гугле тонна.
Хипстерский async/await, без него никуда:(app.post('/login', async (req, res, next) => {
	const { username, password } = req.body;
  
  try {
    const user = await User.find({ username, password }).exec();
    
    if (!user) {
    	return res.status(401).json({ message: 'Invalid username or password'});
    }
    return res.send({ success: true });
  } catch(e) {
  	next(e);
  }
});
На клиенте все просто:
1) Шлете ajax запрос (username, password)
2) получаете  статус (401/200)
3) парсите json
4) если 401, то выводите ошибку
5) если 200, то редиректите через window.location
p.s написано прямо тут, поэтому за работоспособность не ручаюсь, но вроде - должно все работать.
В догонку, чтоб не спрашивать подобные вопросы, посмотрите скринкаст Ильи Кантора по NodeJS
learn.javascript.ru/screencast/nodejs
Получив положительный ответ при XMLHttpRequest-запросе в третьем случае, вы можете JavaScript-ом в браузере сделать редирект.