/ / Błąd: nie można skonfigurować sesji bez klucza tajnego lub pary klucza szyfrowania / podpisu - node.js, ubuntu

Błąd: nie można skonfigurować sesji bez tajnej pary encryptionKey / signatureKey - node.js, ubuntu

Próbuję sprawić, by sesje klienta działały w systemie Ubuntu. Jednak za każdym razem, gdy uruchamiam nodejs app.js Otrzymuję ten błąd.Próbuję dowiedzieć się, co się dzieje, ale nie mogę znaleźć, co się dzieje. Czytałem informacje o sesjach klientów na ich stronach NPM / Github, ale nie mogę dowiedzieć się, co się dzieje. Czy ktoś może mi pomóc lub poprowadzić we właściwe miejsce?

Cały błąd:

/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)

Odpowiedzi:

3 dla odpowiedzi № 1

Używać client-sessions musisz ustawić albo secret lub obie encryptionKey i signatureKey, tak jak zalecane w dokumentacji

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");
}
});

The kod lib/client-sessions.js sprawdza, czy sekrety lub dwa klucze są zainicjowane clientSessionFactory metoda:

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/ strona mówi, jak ustawić secret - używając jakiegoś długiego losowego ciągu (na przykład połącz kilka ciągów z witryny random.org):

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

0 dla odpowiedzi nr 2

Myślę, że błąd, który „otrzymujesz”, nie wymaga wyjaśnień. Jeśli podążasz za śladem stosu, zobaczysz to w następującej ścieżce i linii:

/home/tom/cookiestut/app.js:34:9 brakuje Ci ustawienia klucza tajnego w konfiguracji sesji cookie. Prawdopodobnie masz go skonfigurowany jako zmienna środowiskowa i zapomniałeś go zdefiniować.

Dodaj hasło ręcznie do konfiguracji plików cookie