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 № 1Uż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:
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