Datasnap: событие уничтожения сеанса

В моем приложении всякий раз, когда пользователь входит в систему, он добавляется в таблицу, в которой хранятся данные о зарегистрированных пользователях, но у меня нет ничего реализованного, чтобы удалить этих пользователей из моей таблицы. Мне нужно удалить этого пользователя из моего стола, когда он выходит из системы или теряет сеанс каким-либо другим образом. Есть ли событие «SessionDestroy» или что-то в этом роде, которое позволяет мне реализовать что-то после уничтожения сеанса?


person bpromas    schedule 27.04.2012    source источник


Ответы (1)


Вы можете добавить «события сеанса» (используя анонимные методы) в диспетчер сеансов. Думаю, с 2009 года (но проверено на XE). Работает для сеансов REST и многого другого. Образец кода:

 TDSSessionManager.Instance.AddSessionEvent(
procedure (Sender: TObject; const EventType: TDSSessionEventType;
  const session: TDSSession)
begin
  case EventType of
    SessionCreate :
    begin
      session.UserRoles.Add('guest'); // guest role is fixed
      ...
    end;
    SessionClose:
    begin
      FreeAndNil(some_more_data);
    end;
  end;
end);
person Marco Cantù    schedule 27.04.2012