Node.js.Экспорт подписанного куки в JSON - PullRequest
0 голосов
/ 19 мая 2018

У меня есть подписанный файл cookie, который можно просмотреть с помощью console.log (req.cookies), и он находится в такой форме:

{ 
    'connect.sid':'s:qX4ZrttrjydtrjkgsdghsdghrewynZj4Ew2OUh.tTSILkcvgsegsegsegsr99gmW5
0XLcJefM'
}

Поскольку я знаю файл cookie, но я также знаю секрет,есть способ преобразовать это из этого формата в формат JSON со всеми его полями, такими как (имя, значение, URL, путь, домен, срок действия, httpOnly и т. д.).

Я знаю, чтоПлагин Chrome под названием EditThisCookie может сделать именно это.Так что я думаю, что это можно сделать самому из моего приложения узла.Я просто не знаю как.

Также полезно заявить, что я использую Passport.js и аутентификацию OAUTH2.

1 Ответ

0 голосов
/ 20 мая 2018

Во-первых, я использую Passport.JS, Passport-JWT и JWT:

$ npm i -s passport passport-jwt jsonwebtoken 

В файле app.js (предполагается, что вы используете Express.JS) вы настраиваете паспорт

const passport = require('passport');

// TODO in case we cache need to to verify cache first
passport.use(new passportJWT.Strategy({
    'secretOrKey': 'a secret string, longer than this one', // The secret mut be the same all the times
    'jwtFromRequest': passportJWT.ExtractJwt.fromAuthHeaderAsBearerToken()
  }, (payload, done) => {
    // note that if the token is invalid an error will be thrown, else
    // payload will be set as req.user here
    done(null, payload);
}));

app.use(passport.initialize());

Чем использовать passport.authenticate в маршрутах с контролируемым доступом:

app.get('/home', passport.authenticate('jwt', {'session': false}), dashboard);

В вашем методе входа в систему после успеха вы дарите токен пользователю с данными, которые вы хотите сохранить.в полезной нагрузке:

const jwt = require('jsonwebtoken')
// Here you choose the data tha will be on your payload
jwt.sign({'id': user._id, 'username': user.username, 'email': user.email}, 'a secret string, longer than this one');

Наконец, вы можете получить доступ к данным через req.user int маршруты, которые требуют аутентификации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...