No už delší čas to dělám tak, že session nikam neukládám. Session je řetězec, který si na sobě nese všechny důležité informace, jako userid, platnost, efektivni uroven opravneni a dalsi informace zabalene v bináru, podepsané přes nějaký salt a HMAC-SHA256 a to celé Base64. Pokud bych potřeboval skrýt údaje v session, pak ji mohu ještě AESem zašifrovat (a protože každá session má jiný rozsah platnosti, bude každý řetězec jiný rozsypaný čaj.
Samotná session má platnost nějakou krátkou dobu, třeba 15min, nebo hodinu a rozpoznají ji všechni komponenty, kde se používá, aniž by si musely ta data předávat. Klient (nebo prostřednictvím serveru) je třeba session občas prodloužit, aby nevypršela (změní se ten řetězec).
Nevýhodou těchto session je, že se nedají zneplatnit před vypršením, proto se platnost udržuje krátká.
Pro dlouhodobé session se používá refresh token, který se dá použít k vytvoření session. Tyto token lze udržovat v databázi, není k ním potřeba tak často přistupovat (jen když vyprší původní session).
Celý to je ve shodě se systémem OAuth 2.0
Tomáš je autorem několika více či méně známých projektů jak z oblasti operačních systémů, tak internetu. V současnosti samozvaný expert na Linux, Bash, PHP a MySQL.
Přečteno 24 491×
Přečteno 23 370×
Přečteno 19 003×
Přečteno 17 620×
Přečteno 12 629×