如何在母版页上检查会话为空而不注销

时间:2019-01-21 15:31:21

标签: c# asp.net webforms

我在每次加载页面时都从会话读取值时遇到问题。我必须检查该会话值在主页上是否为null,因为我需要在登录时显示用户真实姓名,以使我不能仅依靠表单身份验证。

每次加载页面时我也在做同样的事情。

if (Session["Nome"] == null)
{
    FormsAuthentication.RedirectToLoginPage();
}

我不确定为什么或是否是由于加载缓慢而引起的,但是即使我仍然通过身份验证,我也会重定向到登录名,因此在某些时候会话为null。我想知道是否有更好的方法在母版页上显示用户名(而非用户名),并在变量实际为null时重定向到登录页。

1 个答案:

答案 0 :(得分:2)

默认情况下,Session变量的时间跨度为20分钟,因此,如果不刷新该变量,则该时间跨度将为null。因此,您要么必须重置"Nome"变量的时间跨度(不建议您在一页上停留21分钟,否则将迫使用户在另一次回发后重新登录)或检查

if(!HttpContext.Current.User.Identity.IsAuthenticated)
    FormsAuthentification.RedirectToLoginPage();
var username = HttpContext.Current.User.Identity.Name;