В authMiddleware подключена библиотека jwt но так и не использована! Вот пример моего мидла
const jwt = require('jsonwebtoken')
const c = require('config')
// проверка токена
const auth = async (req, res, next) => {
try {
const token = req.header('x-auth-token') //тут может быть любой хэдр у меня кастомный
if (!token) return res.status(401).json({ msg: 'No auth 1' })
const verified = jwt.verify(token, c.get('jwtSecret'))
if (!verified) return res.status(401).json({ msg: 'No auth 2' })
req.user = verified.id
next()
} catch (e) {
res.status(500).json({ error: e.message })
}
}
module.exports = auth
потом на фронте например на странице авторизации и отправке данных и проверке на сервере вернуть токен и юзерИнфо на фронт(желательно ещё записать в localStorage типа token:dghehgfdgnhrhwrr) закинуть в useState и до нужного элемента прокинуть через useContext. А потом как хочешь... на нужной странице можешь опять проверить токен и если он валидный выполнять ту или иную логику.
1) только на сервере тк так есть серверный ключ для расшифровки.
2) например я проверяю токен при первом обращении к сайту так
router.post('/login', async (req, res) => {
// --> проверка токена на валидность
try {
const token = req.header('x-auth-token')
if (!token) return res.json(false)
const verified = jwt.verify(token, config.get('jwtSecret'))
if (!verified) return res.json(false)
const user = await User.findById(verified.id)
if (!user) return res.json(false)
return res.json(true)
} catch (e) {
res.status(500).json({ error: e.message })
}
})
у меня любой запрос на сервер идёт с хэдером и на сервере его проверяет милдвэр auth