Извините за мой плохой английский!
Я создаю приложение, используя MEAN Stack
(MongoDB + Express.js + Angular.js + Node.js) и аутентификации с использованием passport.js
и JWT
(jsonwebtoken
и express-jwt
).
Что я хочу сделать?
Маршруты входа и регистрации отображают html, используя nunjucks, и, если он идет успешно, мы обрабатываем файл index.html, размещая его в общедоступном каталоге.
PS: Это правильный метод?
В чем мой вопрос?
Может ли кто-нибудь сказать мне, технология для этого?
Мой код (на основе https://thinkster.io/mean-stack-tutorial):
app.get('/', function(req,res){
if (!req.user)
res.redirect('/about')
else
res.render('index')
});
app.get('/login',function(req, res) {
res.render('auth/login', {
title: 'Login'
});
});
app.post('/', function(req, res, next) {
if (!req.body.login || !req.body.password) {
return res.status(400).json({ message: 'Please fill out all fields' });
}
passport.authenticate('local', function(err, user, info) {
if (err) { return next(err); }
if (user) { return res.json({ token: user.generateJWT()});
/*generateJWT form user model code returns jwt.sign({}) using jsonwebtoken:
var jwt = require('jsonwebtoken');
*/
} else { return res.status(401).json(info);}
})(req, res, next);
});
В этом коде мы возвращаем сгенерированный токен, если логин является успешным. Что я должен сделать для рендеринга index.html и что я могу сделать с созданным токеном? Извините за эти фиктивные вопросы, я все еще изучаю jwt. Благодаря
Узел - это серверный язык. Поскольку вы используете стек MEAN, как правило, вам нужно создавать API-интерфейсы в узле и передавать данные на стороне клиента "Угловая".
Поэтому, чтобы ответить на ваш question- Чтобы отобразить html, ваша функция для входа в систему должна вернуть что-то клиенту, используя обратные вызовы, и Angular отобразит ваши html-страницы.
Что вам нужно сделать с созданным токеном, так это то, что со следующего запроса на сервер без токена будет/должна генерировать ошибку. Кроме того, любой пользователь может назвать ваши API-интерфейсы узлов и желаемые результаты. Это крайне необходимо для методов GET.