Tokenuri legate de un browser cu ENCRYPTREQ() și DECRYPTREQ()
ENCRYPTREQ($, value, key, [strict]) criptează o valoare împreună cu user agent-ul cererii și returnează un token text. DECRYPTREQ($, token, key) citește valoarea înapoi și nu returnează nimic (undefined) când cheia este greșită, tokenul este gol sau cererea vine de la un alt client. Cu strict setat la true, adresa IP a cererii face și ea parte din token, deci încetează să funcționeze și atunci când adresa se schimbă.
Folosește-l pentru valori pe care le dai browserului și le aștepți înapoi de la același browser: un link de scurtă durată, o adresă de descărcare, un token de formular. Nu înlocuiește o sesiune: user agent-ul se copiază ușor. Pentru tokenuri care nu depind de cerere vezi rețeta despre criptare și decriptare.
exports.install = function() {
ROUTE('GET /issue/', issue);
ROUTE('GET /read/', read);
ROUTE('GET /read-wrong-key/', wrongkey);
};
function issue($) {
$.json({ token: ENCRYPTREQ($, { id: 5 }, 'my-secret'), strict: ENCRYPTREQ($, 'only-here', 'my-secret', true) });
}
function read($) {
$.json({ value: DECRYPTREQ($, $.query.token, 'my-secret') || null });
}
function wrongkey($) {
$.json({ value: DECRYPTREQ($, $.query.token, 'another-secret') || null });
}