Подписание куки в экспресс - PullRequest
0 голосов
/ 12 сентября 2018

Если я правильно понял подпись cookie, то это значит: Подпишите печенье с секретом при его установке. Отмените подписку на cookie с тем же секретом, чтобы подтвердить, что он не был изменен при получении.

Теперь в expressjs есть res.cookie() для установки файлов cookie, и требуется «подписанный» логический параметр, чтобы установить, должен ли файл cookie подписываться или нет.

Теперь, какой секрет используется для подписи? Я думаю, что он мог бы использовать секрет, предоставленный cookieParser(), но это нигде явно не упоминается в документации.

Итак, мой вопрос по сути: как мне установить секрет, который будет использоваться для пения файлов cookie в expressjs?

Я прочитал экспресс-документацию и искал ответы в google и stackoverflow, извините, если мне не хватает чего-то очевидного.

Ответы [ 3 ]

0 голосов
/ 12 сентября 2018

Экспресс действительно использует секрет, предоставленный cookie-parser, для подписи вашего куки.Cookie-парсер вставит секрет в ваш объект запроса .Затем экспресс будет использовать его для подписи файла cookie .Если для cookie-parser (или другого промежуточного программного обеспечения) секрет не предоставлен, то при попытке установить новый подписанный cookie * Express будет выдавать ошибку .

Отвечая на ваш вопрос, вы должны это сделатьустановить секрет (используя cookie-parser):

var express = require('express')
var cookieParser = require('cookie-parser')

var app = express()
app.use(cookieParser('your-secret'))

app.get('/', (req, res, next) => {
  res.cookie('name', 'value', { signed: true })
  res.json({})
})

Тогда он будет доступен в req.signedCookies.

0 голосов
/ 26 июля 2019

Недавно я проверял, что куки не совсем понятны для нового.Это cookieParser() принимает секрет и опцию, как куки, я имею в виду все опции из куки.Для подписанных файлов cookie вы можете получить доступ через req.signedCookies, а для неподписанных файлов cookie просто req.cookies.Для отправки файлов cookie с ответом используйте файлы cookie типа

 res.cookie('username', 'john doe', { maxAge: 900000, httpOnly: true, signed: true, secret: '12345' });
res.cookie('user_name', 'anik islam', { maxAge: 900000, httpOnly: true, signed: false, secret: '12345' });

И вы можете получить доступ к файлам cookie типа

console.log(req.cookies);
console.log(req.signedCookies);

Не забывайте о

app.use(cookieParser('12345'));

Видите эту тайную надеждуэто помогает

0 голосов
/ 12 сентября 2018
var express      = require('express')
var cookieParser = require('cookie-parser')

var app = express()
app.use(cookieParser('yourSecretGoesHere'))

Ссылка: https://www.npmjs.com/package/cookie-parser

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