Экспресс Cookie-Parser - Подписанные и неподписанные файлы cookie

Опубликовано: 1 Августа, 2021

Файл cookie - это фрагмент данных, который отправляется клиентской стороне с запросом и хранится на самой стороне клиента веб-браузером, который в данный момент использует пользователь. С помощью куки -

  • Веб-сайтам легко запоминать информацию о пользователе.
  • Легко фиксировать историю просмотров пользователя
  • Это также полезно для хранения сеансов пользователя.

Сеанс делает запросы ко всем серверам, используя секретный идентификатор. Информация хранится на сервере, который связан с этим секретным идентификатором.
Чтобы использовать файлы cookie в нашем приложении, используется промежуточное ПО для парсера файлов cookie. Чтобы установить его, напишите следующую команду -

 npm install cookie-parser @ latest --save

Кроме того, чтобы установить промежуточное ПО промежуточного уровня, напишите следующую команду -

 npm install express @ latest --save

Эти команды установят последние версии cookie-parser и express.
Промежуточное ПО для парсера файлов cookie используется для анализа файлов cookie, прикрепленных к запросу, сделанному клиентом серверу. Поэтому, чтобы использовать cookie-parser, мы напишем следующие строки кода в нашем файле JavaScript:




const cookieParser = require( 'cookie-parser' );
const express = require( 'express' )
const app = express();
app.use(cookieParser());

Давайте посмотрим на пример того, как настроить новый файл cookie. Создайте новый файл с именем «index.js». Для настройки и присвоения имени файлу cookie следуйте коду -

Здесь мы отправили файл cookie на новый маршрут и установили имя файла cookie как «GeeksForGeeks». В последнем блоке кода наш сервер прослушивает порт 3000 с помощью функции обратного вызова. Если произойдет ошибка, функция обратного вызова вернет ошибку, иначе она вернет «Успех».
Теперь запустите следующий код с командой -

 узел index.js

Чтобы проверить, установлен ли файл cookie, просто перейдите по этой ссылке после успешной настройки сервера. Откройте консоль и напишите команду как -

 document.cookie

Вы получите результат как -

 "name = GeeksForGeeks"

Кроме того, промежуточное программное обеспечение парсера файлов cookie заполняет файлы req.cookies именем, которое отправляется на сервер. Здесь, в нашем случае, мы можем добавить следующую строку кода в наш маршрут -

 console.log (req.cookies)

Результатом вышеуказанной строки будет -

 {name: 'GeeksForGeeks'}

Методы для cookie-парсера

  • cookieParser (секрет, параметры)

    - Это промежуточное ПО принимает два параметра. Первым будет секретный идентификатор, а вторым - параметры. Секретный идентификатор может быть строкой или массивом строк. Если секретный параметр не указан, cookie будет восприниматься как неподписанный. Следовательно, указывать секретный идентификатор необязательно. Вторым параметром будет объект, определяющий, какие действия следует выполнять с файлами cookie. Например, decode - это функция для декодирования значения cookie.

  • cookieParser.JSONCookie (str)

    - Этот метод анализирует значение файла cookie как файла cookie JSON. Он вернет проанализированное значение JSON, если предоставленный файл cookie является файлом cookie JSON. Если это не файл cookie JSON, он сам вернет переданное значение.

  • cookieParser.JSONCookies (файлы cookie)

    - Предоставлен объект с прикрепленным идентификатором. Этот метод будет перебирать предоставленный идентификатор объекта и вызывать «JSONCookie» для каждого значения. Он заменит исходное значение проанализированным значением. Это вернет тот же объект, который был передан.

  • cookieParser.signedCookie (строка, секрет)

    - Этот метод анализирует файл cookie как подписанный. Если файл cookie является подписанным файлом cookie и подпись может быть проверена, он вернет проанализированное беззнаковое значение. Если cookie не подписан, возвращается исходное значение. Если файл cookie подписан, но подпись не может быть проверена, возвращается false.
    Теперь наш второй секрет аргумента может быть строкой или массивом строк. Если это строка, то она будет использоваться как секрет. Если это массив, то будет выполняться итерация по каждому элементу массива, и cookie будет беззнаковым с использованием каждого секрета.

  • cookieParser.signedCookies (куки, секрет)

    - Этот метод будет выполнять итерацию по каждому идентификатору и проверять, является ли какой-либо идентификатор подписанным файлом cookie. Если он подписан и подпись может быть проверена, то идентификатор будет удален из объекта, если он будет добавлен к новому возвращаемому объекту.

В зависимости от типа файла cookie, отправленного клиентом, эти методы будут вызываться автоматически.

Реализация подписанных и неподписанных файлов cookie

Неподписанный файл cookie




const express = require( 'express' );
const cookieParser = require( 'cookie-parser' );
const app = express();
app.get( '/' , (req, res) => {
res.cookie( 'name' , 'GeeksForGeeks' ).send();
console.log(req.cookies);
});
app.listen(3000, (err) => {
if (err){ console.log(err) }
else { console.log( 'Success!!' ) }
});

Вывод для приведенного выше кода будет -

 "name = GeeksForGeeks"
Подписанный файл cookie




var express = require( 'express' )
var cookieParser = require( 'cookie-parser' )
var app = express()
app.use(cookieParser( 'GFG' ))
app.get( '/' , function (req, res) {
res.cookie( 'name' , 'GeeksForGeeks' , { signed: true }).send();
console.log(req.signedCookies)
})
app.listen(3000, (err) => {
if (err) { console.log(err) }
else { console.log( 'Success' ) }
})

Здесь, в 4-й строке - «GFG» предоставляется как секретное значение для файла cookie.
В 7-й строке - имя файла cookie установлено на «GeeksForGeeks», а подписанный объект имеет значение true.
Вывод для приведенного выше кода будет -

 {name: 'GeeksForGeeks'}