Когато вашето уеб приложение трябва да „запомни“ потребителите, то обикновено използва един от двата механизма: бисквитки или сесии. Бисквитката е малка област за съхранение в браузъра, където можете да съхранявате данни, свързани с потребителя, като например предпочитания за търсене. Вместо това сесиите ви позволяват да съхранявате чувствителна информация на сървъра.

Открийте как да настроите сесии в Express сървър, захранван от Node.js.

Какво ще ви е необходимо

За да следвате този урок, имате нужда от инсталирани Node.js и npm. Всяка скорошна версия на Node.js трябва да дойде с npm, мениджър на пакети за инсталиране на зависимости.

Ще използвате npm, за да инсталирате Express и express-session. Това са инструментите, които ще използвате за създаване на уеб сървър и сесия.

Какво е сесия в Node.js?

Бисквитката е малък файл, който вашият браузър използва за съхраняване на данни. Можете да използвате бисквитки, за да съхранявате нечувствителни данни като предпочитания за търсене.

Не трябва да съхранявате чувствителни данни (като потребителски имена и пароли) в бисквитки. Когато вашият браузър изпраща бисквитки през HTTP, те са уязвими за хакери, които може да са в състояние да ги прихванат. Те също се съхраняват в обикновен текст на вашия компютър, така че хакерите могат потенциално да ги проверят и да откраднат вашите данни.

instagram viewer

Вместо да запазвате чувствителни данни като бисквитка на клиента, трябва да ги съхранявате на сървъра. Това го предпазва от външния свят.

Сесиите ви позволяват да съхранявате чувствителни данни, необходими на вашето приложение, за да идентифицира потребителя. Примери са потребителско име, парола и имейл. Те са по-сигурни, защото живеят на сървъра, а не на клиента.

Всеки път, когато имате данни, които искате да запазите в заявките, запазете ги от страната на сървъра, като използвате сесия. Ще научите как да създадете сесия в следващия раздел.

Създаване на сесия в експресен сървър

Express е популярна уеб рамка за Node.js. Позволява ви да настроите приложение за уеб сървър, което слуша клиентски заявки на избрания от вас номер на порт. Можете да създадете API маршрути, да приложите междинен софтуер и дори да свържете приложението към база данни, всичко това благодарение на API, предоставени от рамката.

1. Създайте проект Node.js

Създайте чисто нова папка за вашия проект, след това стартирайте инструмента на командния ред и го влезте в тази папка.

След това изпълнете следната команда, за да инициализирате проект Node.js:

npm init -y

Това генерира файл package.json в главната папка на проекта с настройката по подразбиране. Файлът package.json за изпълнение npm скриптове.

2. Инсталирайте Express и експресна сесия

Ще използвате Express, за да създадете приложението за уеб сървър. И експресна сесия за създаване на сесии на това сървърно приложение.

На терминала изпълнете следната команда, за да инсталирате и двете зависимости:

npm експресна експресна сесия

След като инсталирате и двата пакета, следващата стъпка ще бъде създаването на сървъра.

3. Създавайте сесии в приложението

Създайте файл с име App.js в основната папка на вашия проект и импортирайте зависимостите:

конст експрес = изискват("експресен")
конст сесия = изискват("експресна сесия")
приложение = експрес()

След това регистрирайте междинния софтуер на сесията. Преминете в обект с тайна свойство (за подписване на бисквитката sessionID) и бисквитката.

app.use(
сесия({
тайна: "някаква тайна",
бисквитка: { maxAge: 30000 },
saveUninitialized: невярно,
})
);

Тук задавате най-голямата възраст на сесията на 30 секунди (30000 милисекунди). Задаването на saveUnitialized на false е от съществено значение, ако имате система за влизане. Ако не успеете да го направите, вашият сървър ще генерира нов sessionID всеки път, когато потребителят изпрати заявка.

След това създайте маршрут за влизане, за да промените сесията. Когато потребител попадне на този маршрут, очаквате клиентът да изпрати потребителското име и паролата в тялото на заявката. Първо получавате достъп до тези стойности и проверявате дали съществуват (и дали потребителят се е удостоверил):

app.post("/Влизам", (req, res) => {
конст {потребителско име, парола} = req.body;

ако (потребителско име && парола) {
ако (req.session.authenticated) {
res.json (сесия);
} друго {
ако (парола "123") {
req.session.authenticated = вярно;
req.session.user = {потребителско име};
res.json (req.session);
} друго {
res.status(403).json({ съобщ: „Грешни идентификационни данни“ });
}
}
} друго {
res.status(403).json({ съобщ: „Грешни идентификационни данни“ });
}
});

С първия оператор if извършвате фиктивна проверка. Тази проверка има за цел да гарантира, че ще продължите само ако потребителското име и паролата са налични.

След това проверявате дали потребителят вече е удостоверен. Ако е така, изпратете сесията обратно на клиента. Ако не, задайте удостовереното свойство на true и запазете потребителското име в сесията. След това го изпратете обратно на клиента.

С горния код сървърът ще запомни всеки потребител, който изпрати заявка до сървъра. Това е така, защото те са се удостоверили и са запазили своите уникални данни (потребителско име и парола) в сесията.

Стартирайте вашия сървър, като добавите следния код в долната част на App.js:

app.listen(3000, () => {
конзола.log(„Сървърът работи на порт 3000“);
});

За да тествате този маршрут, използвайте API клиент, за да изпратите заявка към маршрута за влизане, който сте създали. Не забравяйте да изпратите потребителското име и паролата в тялото на заявката. Ето как ще изглежда вашата заявка за API, ако използвате Rest Client:

ПУБЛИКУВАЙТЕ http://localhost: 3000/login HTTP/1.1
Тип съдържание: "приложение/json"
{ потребителско име: "Кингсли", парола: "123"}

Ако всичко върви добре, ще получите следния обект:

{
"бисквитка": {
"originalMaxAge": 30000,
"Само http": вярно,
"път": "/"
},
"удостоверен": вярно,
"потребител": {
"потребителско име": "Кингсли",
"парола": "123"
}
}

С този код се случиха две неща. Първо, вие сте се удостоверили на сървъра. Второ, сесията вече има вашите данни за вход, така че сървърът вече знае кой сте. Всеки път, когато изпратите нова заявка, тя ще ви запомни, докато сесията изтече и сървърът не я премахне.

Сесиите подобряват потребителското изживяване

Сесиите са жизненоважна част от приложенията Node.js. Това е така, защото те ви позволяват да поддържате състояние на взаимодействие в много заявки и отговори. Сесиите са особено важни за приложения, които изискват да влезете.

Използвайте сесии във вашето бекенд приложение, за да следите специфични за потребителя данни. Пример за такива данни са артикулите, които вашият потребител е добавил към пазарска количка.

Без сесии ще трябва да поддържате отделно хранилище на данни за всеки потребител във вашето приложение. Това би било неефективно и би усложнило приложението.

Express.js опростява сесиите, маршрутизирането и други

Express.js е най-популярната Node.js уеб рамка, която се използва в момента. Той предоставя много инструменти и библиотеки за създаване на бекенд приложения, а библиотеката за експресни сесии е само една от тях.

Ако искате да използвате Node.js за бекенд уеб разработка, проверете Express.