Как отправить токен JWT в Cookie и использовать в других маршрутах?

Это мой контроллер входа (JWT)

const token = jwt.sign({ _id: user._id }, secret);
res.header('auth-token', token).redirect('/home');

Это мое промежуточное ПО для токена JWT

module.exports = (req, res, next)=>{
    const token = req.header('auth-token');
    if(!token){
        return res.send('Denied');
    }
    try {
        const verified = jwt.verify(token, secret);
        req.user = verified;
        next();
    } catch (error) {
        console.log('JWT Error', error)
    }
}

Это мой код маршрута

const verify = require('../middlewares/tokenMiddleware');
router.get('/home', verify, (req, res, next)=>{
  res.render('home');
});

Маркер назначается и отображается на маршруте входа в систему. Но я хочу отправить его в файл cookie, чтобы я мог использовать его на всех маршрутах для аутентификации пользователя.


person Sreerag Pavithran    schedule 12.06.2020    source источник


Ответы (1)


Вам необходимо установить пакет парсера файлов cookie, чтобы устанавливать и читать файлы cookie из запроса. Ссылка: Express (синтаксический анализатор файлов cookie). После установки пакета вы можете просто использовать его. внутри вашего приложения узла.
Установка файлов cookie: -

const cookieParser = require('cookie-parser');

app.use(cookieParser());
res.cookie('auth-token', token, [options]);    // You can look up the options at the API reference

Чтение куки: -

const token = req.cookies['auth-token'];

В качестве альтернативы, чтобы установить файлы cookie без использования пакета анализатора файлов cookie, вы должны использовать заголовок 'Set-Cookie : , чтобы установить файлы cookie с использованием заголовка HTTP.

person spaceSentinel    schedule 12.06.2020