【发布时间】:2009-09-03 12:24:21
【问题描述】:
当用户登录我的 asp.net 网站时(通过 FormsAuthentication),我将一些关于他们的信息存储在当前会话中,例如他们的 UserId、FirstName 以及我在各种网页中经常需要的其他非常基本的变量。
问题是即使会话超时设置为长于 FormsAuthentication 超时,我注意到有时当前会话会被重置(即 session=null)。
1) 我不明白为什么会这样。有任何想法吗?
2) 发生这种情况时,用户仍处于登录状态(FormsAuthentication 尚未超时),但他们当前的会话不再包含任何数据。我想做的是,当当前会话超时时,他们被要求再次登录。为此,我需要检测会话超时,并在发生时将其注销。如何才能做到这一点?
3) 这似乎有点矫枉过正。我不能直接在 FormsAuthentication 中存储我在会话中存储的任何内容(UserId、FirstName 等)吗?如果是这样,如何?这样,无论当前会话如何(在这种情况下将不再使用),我都可以在它们仍然登录时访问这些值。你觉得这个逻辑有什么问题吗?如果没有,怎么办?
【问题讨论】:
-
您是否正在使用 HttpContext.Current.User 获取信息??
-
@David,不,这不是重复的,这些问题略有不同
-
@Muhammad:除了名称之外,您还能在 HttpContext.Current.User 中存储什么?据我所知,什么也没有。