Токен может хранить любую информацию в зашифрованном виде. В случае успешной авторизации поместите в токен такое уникальное значение, на основании которого в последствии вы сможете получить данные пользователя, организовав на их основании сессию. Самый простой случай - хранить в токене уникальный id пользователя. Реализовать можно при помощи плагина "jsonwebtoken".
Создадим отдельный модуль "secure.js" для генерации/расшифровки токена:
let Secure = function() {
const SECRET_PHRASE = 'secret';
let jwt = require('jsonwebtoken');
let getSecretPhrase = () => {
return SECRET_PHRASE;
};
let generateToken = (userEntityId) => {
return jwt.sign({ 'entity_id' : userEntityId }, SECRET_PHRASE);
};
let verifyToken = (token) => {
return jwt.verify(token, SECRET_PHRASE);
};
return {
getSecretPhrase : getSecretPhrase,
generateToken : generateToken,
verifyToken : verifyToken
}
};
module.exports = new Secure();
При авторизации по логину и паролю, сгенерируем токен для клиента в случае успеха, поместив в него уникальный _id пользователя:
/* обращаемся к базе, находим пользователя по логину и паролю (userData) */
let secure = require('./secure.js');
var token = { 'token' : secure.generateToken(userData._id) };
На стороне сервер-сокета получаем объект данного токена:
{ token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbnRpdHlfaWQiOiJ0ZXN0IiwiaWF0IjoxNDcxMDA0NDc2fQ.bu0wJbbKpNfyP2uOJWwDuzR89NkfBNmRGqUKXQ03usQ' }
Расшифруем и вытащим из него _id пользователя из авторизации:
let secure = require('./secure.js');
var uid;
try {
uid = secure.verifyToken(token).entity_id;
} catch(e) {
//
}
И по этому uid находим данные в базе.