/ / Грешка: не може да настрои сесии без тайна или криптиранеKey / signatureKey двойка - node.js, ubuntu

Грешка: не може да настрои сесии без тайна или криптиранеKey / signatureKey двойка - node.js, ubuntu

Опитвам се да накарам клиентски сесии да работят върху Ubuntu. Въпреки това, винаги когато стартирам nodejs app.js Разбирам тази грешка. Опитвам се да разбера какво се случва, но не мога да намеря какво става. Прочетох информацията за клиентските сесии на техните NPM / Github сайтове, но не мога да разбера какво се случва. Може ли някой да ми помогне или да ме заведе на правилното място?

Цялата грешка:

/home/tom/cookiestut/node_modules/client-sessions/lib/client-sessions.js:548
throw new Error("cannot set up sessions without a secret "+
^

Error: cannot set up sessions without a secret or encryptionKey/signatureKey pair
at clientSessionFactory (/home/tom/cookiestut/node_modules/client-sessions/lib/client-sessions.js:548:11)
at Object.<anonymous> (/home/tom/cookiestut/app.js:34:9)
at Module._compile (internal/modules/cjs/loader.js:654:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:665:10)
at Module.load (internal/modules/cjs/loader.js:566:32)
at tryModuleLoad (internal/modules/cjs/loader.js:506:12)
at Function.Module._load (internal/modules/cjs/loader.js:498:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:695:10)
at startup (internal/bootstrap/node.js:201:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:516:3)

Отговори:

3 за отговор № 1

Да използвам client-sessions трябва да зададете едно от двете secret или и двете encryptionKey и signatureKey, като препоръчително в документацията

https://www.npmjs.com/package/client-sessions#usage

var sessions = require("client-sessions");
app.use(sessions({
cookieName: "mySession", // cookie name dictates the key name added to the request object
secret: "blargadeeblargblarg", // should be a large unguessable string
duration: 24 * 60 * 60 * 1000, // how long the session will stay valid in ms
activeDuration: 1000 * 60 * 5 // if expiresIn < activeDuration, the session will be extended by activeDuration milliseconds
}));

app.use(function(req, res, next) {
if (req.mySession.seenyou) {
res.setHeader("X-Seen-You", "true");
} else {
// setting a property will automatically cause a Set-Cookie response
// to be sent
req.mySession.seenyou = true;
res.setHeader("X-Seen-You", "false");
}
});

Най- код на lib/client-sessions.js проверява дали тайните или два ключа са инициализирани в clientSessionFactory метод:

https://github.com/mozilla/node-client-sessions/blob/d0c20af3b0ed7750c68d3ae67819dfe203fa3d60/lib/client-sessions.js#L542

  if (!(opts.secret || (opts.encryptionKey && opts.signatureKey))) {
throw new Error("cannot set up sessions without a secret "+
"or encryptionKey/signatureKey pair");
}

https://hacks.mozilla.org/2012/12/using-secure-client-side-sessions-to-build-simple-and-scalable-node-js-applications-a-node-js-holiday-season-part-3/ страница казва как да зададете secret - чрез използване на дълъг случаен низ (например комбинирайте няколко низа от сайта random.org):

app.use(clientSessions({
secret: "0GBlJZ9EKBt2Zbi2flRPvztczCewBxXK" // set this to a long random string!
}));

0 за отговор № 2

Мисля, че грешката, която го "получавате", се обяснява само. Ако следвате следата на стека, можете да видите това в следния път и ред:

/home/tom/cookiestut/app.js:34:9 липсва ви, за да настроите тайната на конфигурацията на вашата бисквитна сесия. Вероятно сте я конфигурирали като променлива среда и сте забравили да я дефинирате.

Добавете секретно ръчно към създадената бисквитка