ВСТУП
Модуль n2o_session надає механізм сесій — змінні сесій, захищені токеном авторизації.
> ets:tab2list(cookies).
[{{<<"05dcf467c79071008bc4">>,user},{63710034516,"maxim"}},
{{<<"05dcf467c79071008bc4">>,room},{63710034516,"n2o"}},
{{<<"05dcf467c79071008bc4">>,auth},{63710033891,[]}}]
ТИПИ
Токен сесії представляє собою кортеж, кешований в ETS. Він складається з ідентифікатора сесії, терміну придатності, ключа та значення. Токен сесії використовується як для змінних авторизації, так і для змінних сесії.
-type expires() :: integer().
-type session_sid() :: binary().
-type session_key() :: { session_sid() , term() }.
-type session_val() :: { expires() , term() }.
-type session() :: { session_key() , session_val() }.
Токен сесії виглядає як значення, зашифроване pickler, в кортежі з ключем 'Token'.
-type token() :: { 'Token', binary() }.
API
authenticate([],binary()) -> token().
Протокол виглядає наступним чином. Якщо термін придатності сесії закінчився, або токен сесії недійсний — створюється новий токен сесії. У випадку, коли термін придатності ще не закінчився, і токен сесії є валідним, можливі два варіанти: 1) якщо параметр n2o nitro_prolongate дорівнює true, то оновлюється значення терміну придатності для поточної сесії (поки sid сесії залишається незмінним); 2) якщо nitro_prolongate дорівнює false — токен сесії повністю залишається незмінним.
get_value(binary(),term(),term()) -> term().
Повертає значення змінної сесії зі storage сесій.
set_value(binary(),term(),term()) -> term().
Зберігає значення змінної сесії в storage сесій.
storage() -> atom().
Повертає поточний бекенд сесій. По замовчуванню n2o_session.
prolongate() -> boolean().
Повертає n2o параметр nitro_prolongate. По замовчуванню false.
BACKEND
clear(binary()) -> ok.
Очищає всі змінні сесії по sid.
update(session()) -> ok.
Оновлює сесію.
delete(session_key()) -> ok.
Видаляє сесію по ключу.
lookup(session_key()) -> ok.
Пошук сесії по ключу.
invalidate_sessions() -> ok.
Видаляє всі змінні, для яких закінчився термін придатності, для всіх сесій.