Tokeny viazané na prehliadač cez ENCRYPTREQ() a DECRYPTREQ()
ENCRYPTREQ($, value, key, [strict]) zašifruje hodnotu spolu s user agentom požiadavky a vráti textový token. DECRYPTREQ($, token, key) prečíta hodnotu späť a nevráti nič (undefined), keď je kľúč nesprávny, token je prázdny alebo požiadavka pochádza od iného klienta. Keď je strict nastavené na true, súčasťou tokenu je aj IP adresa požiadavky, takže prestane fungovať aj vtedy, keď sa adresa zmení.
Použite to pre hodnoty, ktoré odovzdáte prehliadaču a očakávate ich späť od toho istého prehliadača: krátkodobý odkaz, adresu na stiahnutie, token formulára. Nenahrádza reláciu: user agent sa dá ľahko skopírovať. Pre tokeny, ktoré nezávisia od požiadavky, pozrite recept o šifrovaní a dešifrovaní.
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 });
}