会话结束时访问会员用户

2023-12-01

我目前正在尝试编写一些代码,以便在用户放弃会话(通过超时或注销)后进行一些整理,但希望访问 User 对象,以便我知道该会话属于谁。

不幸的是 HttpContext 为空,所以我无法直接访问 HttpContext.User 或 HttpContext.User.IsInRole 甚至身份验证 cookie。我理解这背后的原因,但想知道当会话超时时是否有其他方法可以访问此信息?

除了复制会话中某些信息的明显答案之外。

Thanks.


您可以使用全局.asax's 会话结束事件。当会话过期时,会自动调用 Session_End 事件。

问题是在没有当前请求的情况下调用 Session_End 事件。作为结果,HttpContext.CurrentSession_End 内为空。

如果你想获取用户的信息,你需要在用户成功登录后立即将它们保存在Session中。

private void Session_End(object sender, EventArgs e)
{
    // Code that runs when a session ends. 
    // Note: The Session_End event is raised only when the sessionstate mode
    // is set to InProc in the Web.config file. If session mode is set 
    // to StateServer or SQLServer, the event is not raised.

    var userName = Session["UserName"];
    var sessionId = Session.SessionID;
}

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

会话结束时访问会员用户 的相关文章

随机推荐