Kryptera och dekryptera data med en nyckel
ENCRYPT(value, key) serialiserar ett värde till JSON och returnerar en ogenomskinlig text. DECRYPT(text, key) returnerar det ursprungliga värdet, eller null när texten har ändrats, inte är giltig eller krypterades med en annan nyckel. Inställningen secret i din config blandas in i nyckeln, så tokens skapade på en installation öppnas inte på en annan.
Använd det för länkar för återställning av lösenord, inbjudningstokens och allt du lämnar till en klient och verifierar senare utan att lagra det. Lägg en utgångstid (en tidsstämpel) i värdet och kontrollera den efter dekrypteringen.
secret : change-this-secret-in-productionexports.install = function() {
ROUTE('GET /token/', create);
ROUTE('GET /verify/', verify);
};
function create($) {
var token = ENCRYPT({ userid: '123', expire: Date.now() + 60000 }, 'reset-password');
$.json({ token: token });
}
function verify($) {
var data = DECRYPT($.query.token || '', 'reset-password');
if (!data || data.expire < Date.now()) {
$.invalid(401);
return;
}
$.json({ userid: data.userid });
}