session - 使用 ServiceStack session 功能时检测 session 开始(类似于 Global.asax Session_Start)的最佳方法是什么?

标签 session servicestack session-state

我已经在服务堆栈中启用了 session 支持,例如:

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());         

我看到 ss-id 和 ss-pidd cookie 是在访问网站时设置的,但是我想知道 session 何时启动(即来自该用户的第一个请求),以便我可以捕获传入的引荐来源网址。

使用传统的 asp.net session ,我会在 Global 中使用 Session_Start,但是在使用 SS session 时这不会触发我。

使用 ServiceStack 时有没有好的方法来检测此 session 启动事件?我在网上查询或 ServiceStack Sessions wiki 上没有找到任何引用资料.

最佳答案

目前ServiceStack的Sessions功能中没有“Session Started”事件,但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 中的一项功能请求。 (并包括您的用例),以便我们可以跟踪它。

关于session - 使用 ServiceStack session 功能时检测 session 开始(类似于 Global.asax Session_Start)的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15842846/

相关文章:

安卓。解析.com : Invalid Session Token

java - 在 Safari 中, session 不会在后续的 POST 和 GET 之间保持

binding - Multi-Tenancy ServiceStack API,是否可以通过相同的部署来响应不同主机名上的请求?

servicestack - ServiceStack 中的自定义身份验证提供程序出现 ArgumentNullException

c# - MVC3 : C# Forms Authentication and Session State

javascript - 尝试阻止用户在注销后返回上一页不起作用

asp.net-mvc-3 - 如何在 MVC 3 中增加 session 超时

servicestack - 为什么servicestack服务路由到GET而不是PUT

java - Portlet、HttpSession 和线程安全

cookies - Formsauthentication.SetAuthCookie 和 Session 的区别用法