2013-04-05 1 views
2

Я включил Поддержка сессий в стеке услуг, как:Каков наилучший способ обнаружения начала сеанса (аналогично Session_Start Global.ashx) при использовании ServiceStack SessionFeature?

container.Register<IRedisClientsManager>(c => container.Resolve<PooledRedisClientManager>()); 
container.Register<ICacheClient>(c => c.Resolve<IRedisClientsManager>().GetCacheClient()); 
container.Register<ISessionFactory>(c => new SessionFactory(c.Resolve<ICacheClient>())); 

//RE: https://github.com/ServiceStack/ServiceStack/wiki/Sessions 
Plugins.Add(new SessionFeature());   

Я вижу, что сс-ID и сс-PIDD печенье устанавливается после посещения сайта, однако я хотел бы знать, когда начинается сеанс (т.е. первый запрос от этого пользователя), поэтому я могу захватить входящий URL-адрес реферера.

Использование традиционных сессий asp.net, я бы использовал Session_Start в Global, однако это не срабатывает для меня при использовании сеансов SS.

Есть ли способ обнаружить это событие начала сеанса при использовании ServiceStack? Я не нашел ссылки в моих запросах в Интернете или на ServiceStack Sessions wiki.

ответ

2

Там в настоящее время нет «Session Started» событие Sessions ServiceStack по возможности, но есть некоторые события на IAuthSession, которые могут быть полезны для использования вместо, например:

public interface IAuthSession 
{ 
    ... 
    void OnRegistered(IServiceBase registrationService); 
    void OnLogout(IServiceBase authService); 
    void OnAuthenticated(IServiceBase authService, IAuthSession session, 
     IOAuthTokens tokens, Dictionary<string, string> authInfo); 
} 

Если вы еще хотели бы, чтобы увидеть Событие OnSessionStarted запрашивает его как функцию в ServiceStack's GitHub issues (и включает в себя ваш прецедент), поэтому мы можем отслеживать его.

+0

Значит, никаких событий на самом сеансе нет, только если вы используете функции аутентификации? – JesseP

+0

Правильно, в настоящее время нет событий сеанса. Вы всегда можете реализовать свой собственный [SessionFeature] (https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack.ServiceInterface/SessionFeature.cs) плагин и просто использовать это вместо этого. – mythz

+0

Звучит неплохо. Если я придумаю чистую реализацию, я отправлю запрос на перенос. Предполагая, что это то, что вы видите в наличии в плагине SessionFeature по умолчанию, правильно? – JesseP