Я пытался создать приложение для регистрации / входа с помощью Nodejs.Просматривая статьи, я понял, что это хорошая структура для разработки вашего приложения, так что ваш бэкэнд на самом деле является API RESTful, а ваш клиент обращается к этому API.(И клиент, и сервер работают на разных серверах, тогда как клиент - это просто старый статический файловый сервер).
Теперь все прошло гладко, пока мне не пришлось входить в систему пользователей. Когда конечная точка API (/ signin) ск конкретным данным обращаются, данные проверяются по базе данных, и если все в порядке, я подписываю веб-токен JSON и передаю его клиенту.
Но проблема в том, что с этим я могу защищать только маршруты на своем API, т.е. я могу только обеспечить, чтобы пользователь входил в систему для доступа к определенной конечной точке API бэкэнда.
Но чтоя могу сделать, чтобы принудить то же самое на моем клиенте с этим JWT?Например, если в моем клиенте у меня есть dashboard.html, и я хочу, чтобы он был доступен только зарегистрированным пользователям, пользователь может продолжить и получить сгенерированный JWT.Но как этот JWT вступает в игру по поводу ограничения клиентских маршрутов?
Мой маршрут входа в систему:
app.post('/signin', (req, res) => {
var data = req.body;
if (!exists(data.username) || !exists(data.password))
return res.status(422).json({
message: 'All fields are required'
});
const users = db.get('users');
users
.findOne({
username: data.username,
password: shajs('sha256').update(data.password).digest('hex')
})
.then((user) => {
if (user) {
jwt.sign({
_id: user._id,
username: user.username
}, 'keyboard_cat', {
expiresIn: '1h'
}, (err, tok) => {
return res.status(200).json({
message: 'OK',
token: tok
});
});
return;
}
return res.status(200).json({
message: 'Invalid Username or Password.'
})
});
});