Када ваша веб апликација треба да "запамти" кориснике, обично користи било који од два механизма: колачиће или сесије. Колачић је мала област меморије у претраживачу где можете да чувате податке везане за кориснике као што су, на пример, подешавања претраге. Уместо тога, сесије вам омогућавају да чувате осетљиве информације на серверу.

Откријте како да подесите сесије на Екпресс серверу који покреће Ноде.јс.

Шта ће вам требати

Да бисте пратили овај водич, морате инсталирати и Ноде.јс и нпм. Било која недавна верзија Ноде.јс треба да дође са нпм, менаџер пакета за инсталирање зависности.

Користићете нпм да инсталирате Екпресс и екпресс-сессион. Ово су алати које ћете користити за креирање веб сервера и сесије.

Шта је сесија у Ноде.јс?

Колачић је мала датотека коју ваш претраживач користи за складиштење података. Можете да користите колачиће за чување неосетљивих података као што су подешавања претраге.

Не би требало да чувате осетљиве податке (као што су корисничка имена и лозинке) у колачићима. Када ваш претраживач шаље колачиће преко ХТТП-а, они су рањиви на хакере који би могли да их пресретну. Такође се чувају у обичном тексту на вашем рачунару, тако да хакери могу потенцијално да их прегледају и украду ваше податке.

Уместо да чувате осетљиве податке као колачић на клијенту, требало би да их сачувате на серверу. Ово га штити од спољашњег света.

Сесије вам омогућавају да чувате осетљиве податке који су вашој апликацији потребни да би идентификовала корисника. Примери су корисничко име, лозинка и е-пошта. Они су сигурнији јер живе на серверу, а не на клијенту.

Сваки пут када имате податке које желите да задржите у захтевима, сачувајте их на страни сервера користећи сесију. Научићете како да направите сесију у следећем одељку.

Креирање сесије у експрес серверу

Екпресс је популаран веб оквир за Ноде.јс. Омогућава вам да подесите апликацију веб сервера која слуша захтеве клијената на изабраном броју порта. Можете креирати АПИ руте, применити средњи софтвер, па чак и повезати апликацију са базом података, све захваљујући АПИ-јима које пружа оквир.

1. Направите Ноде.јс пројекат

Направите потпуно нову фасциклу за свој пројекат, а затим покрените алатку командне линије и ЦД у ту фасциклу.

Затим покрените следећу команду да бисте иницијализовали Ноде.јс пројекат:

нпм инит -и

Ово генерише датотеку пацкаге.јсон у основној фасцикли пројекта са подразумеваним подешавањем. Датотека пацкаге.јсон за покретање нпм скрипте.

2. Инсталирајте Екпресс и екпресс-сессион

Користићете Екпресс за креирање апликације за веб сервер. И експресна сесија за креирање сесија на тој серверској апликацији.

На терминалу покрените следећу команду да бисте инсталирали обе зависности:

нпм и екпресс екпресс-сессион

Након инсталирања оба пакета, следећи корак би био креирање сервера.

3. Креирајте сесије у апликацији

Направите датотеку под називом Апп.јс у основној фасцикли вашег пројекта и увезите зависности:

конст екпресс = захтевају('изразити')
конст сесија = захтевају('експресна сесија')
апп = екпресс()

Затим региструјте међуверски софтвер сесије. Прођите у објекат са тајни својство (за потписивање колачића сессионИД) и колачића.

апп.усе(
седница({
тајна: "нека тајна",
колачић: { макАге: 30000 },
савеУнинитиализед: лажно,
})
);

Овде постављате највећу старост сесије на 30 секунди (30000 милисекунди). Постављање савеУнитиализед на фалсе је од суштинског значаја ако имате систем за пријаву. Ако то не урадите, ваш сервер ће генерисати нови ИД сесије сваки пут када корисник пошаље захтев.

Затим креирајте руту за пријаву да бисте променили сесију. Када корисник дође на ову руту, очекујете да ће клијент послати корисничко име и лозинку у телу захтева. Прво, приступите овим вредностима и проверите да ли постоје (и да ли је корисник аутентификован):

апп.пост("/Пријавите се", (рек, рес) => {
конст { корисничко име, лозинка } = рек.боди;

ако (корисничко име Лозинка) {
ако (рек.сессион.аутхентицатед) {
рес.јсон (сесија);
} друго {
ако (Лозинка "123") {
рек.сессион.аутхентицатед = истина;
рек.сессион.усер = { корисничко име };
рес.јсон (рек.сессион);
} друго {
рес.статус(403).јсон({ мсг: "Лоше акредитиве" });
}
}
} друго {
рес.статус(403).јсон({ мсг: "Лоше акредитиве" });
}
});

Са првом иф наредбом, вршите лажну проверу. Ова провера је да би се осигурало да наставите само ако су корисничко име и лозинка присутни.

Затим проверите да ли је корисник већ аутентификован. Ако је тако, пошаљите сесију назад клијенту. Ако није, подесите својство аутентификације на тачно и сачувајте корисничко име у сесији. Затим га пошаљите назад клијенту.

Са горњим кодом, сервер ће запамтити сваког корисника који пошаље захтев серверу. То је зато што су се аутентификовали и имали су своје јединствене детаље (корисничко име и лозинку) сачуване у сесији.

Покрените свој сервер додавањем следећег кода на дну Апп.јс:

апп.листен(3000, () => {
конзола.Пријава(„Сервер ради на порту 3000“);
});

Да бисте тестирали ову руту, користите АПИ клијент да пошаљете захтев на руту за пријаву коју сте креирали. Обавезно пошаљите корисничко име и лозинку у телу захтева. Ево како би изгледао ваш АПИ захтев ако користите Рест Цлиент:

ПОСТ хттп://лоцалхост: 3000/логин ХТТП/1.1
Тип садржаја: "апплицатион/јсон"
{ корисничко име: "Кингсли", Лозинка: "123"}

Ако све прође како треба, добићете следећи објекат:

{
"колачић": {
"оригиналМакАге": 30000,
"хттпОнли": истина,
"пут": "/"
},
"аутентификован": истина,
"корисник": {
"корисничко име": "Кингсли",
"Лозинка": "123"
}
}

Са овим кодом су се десиле две ствари. Прво, потврдили сте аутентичност на серверу. Друго, сесија сада има ваше податке за пријаву, тако да сервер сада зна ко сте. Сваки пут када пошаљете нови захтев, он ће вас памтити све док сесија не истекне и сервер је не уклони.

Сесије побољшавају корисничко искуство

Сесије су витални део Ноде.јс апликација. То је зато што вам омогућавају да одржите стање интеракције у многим захтевима и одговорима. Сесије су посебно важне за апликације за које је потребно да се пријавите.

Користите сесије у својој позадинској апликацији да бисте пратили податке специфичне за корисника. Пример таквих података су артикли које је ваш корисник додао у корпу за куповину.

Без сесија, морали бисте да одржавате засебно складиште података за сваког корисника у вашој апликацији. Ово би било неефикасно и повећало би сложеност апликације.

Екпресс.јс поједностављује сесије, рутирање и још много тога

Екпресс.јс је најпопуларнији Ноде.јс веб оквир који се тренутно користи. Пружа многе алате и библиотеке за креирање позадинских апликација, а библиотека експресних сесија је само једна од њих.

Ако желите да користите Ноде.јс за бацкенд веб развој, погледајте Екпресс.