Ниже приведен минимальный код, реализующий механизм сессий.
-module(session).
-behaviour(gen_server).
-export([start_link/0,init/1,handle_call/3]).
-export([add/1,del/1,verify/2]).
%%internal function.
newtime()->
{Mega, Seconds, _} = erlang:now(),
Timestamp = Mega * 1000000 + Seconds.
newcookie()->
uuid:v4() .
%%external function
add(Name)->
gen_server:call(session,{add,Name}) .
del(Name)->
gen_server:call(session,{del,Name}) .
verify(A,B)->
[]
.
%%gen_server callback function
init(_Args)->
{ok,[]}
.
start_link() ->
gen_server:start_link({local, session}, session, [], []).
%%Session=[{Name,Cookie,Date},{Name1,Cookie1,Date1}]
handle_call({add,Name}, _From, Session)->
NewSession=Session++[{Name,newcookie(),newtime()}],
{reply, NewSession, NewSession};
handle_call({del,Name}, _From, Session)->
NewSession=[{X,Y,Z} || {X,Y,Z} <- Session, X /= Name],
{reply, NewSession, NewSession}.
где модуль uuid взят
http://github.com/travis/erlang-uuid/blob/master/uuid.erl