登出时为什么page.user.identity.name不是“”

时间:2011-08-29 15:38:54

标签: c# asp.net logout username

当我注销Page.User.Identity.Name的值仍然包含用户名而不是在那里放空字符串。 有人知道为什么吗? 我正在使用visual studio 2010,c#

4 个答案:

答案 0 :(得分:1)

除了身份名称所包含的内容之外,我认为您应该更关心这一点:

if (User.Identity.IsAuthenticated)
{
  // Current user is Authenticated
}
else
{
  // Current user is NOT Authenticated
}

答案 1 :(得分:1)

如果您使用模板创建网站,那么您可能正在使用表单身份验证。

当您单击“注销”时,您需要触发一个包含此代码的事件

FormsAuthentication.SignOut();

这应删除与用户相关的所有必要会话/ cookie。

答案 2 :(得分:0)

我之前遇到过类似的问题。我做了一些研究,听起来可能与页面缓存有关。

我的解决方法是将此问题重定向到另一个页面(即登录页面或主页)。

希望有所帮助。

答案 3 :(得分:0)

您是否在查看同一个请求中的值?如果是这样,那么名称将在那里,因为用户仍然对该请求进行了身份验证(在ASP.NET早期进行身份验证)。在下一个请求中,您应该看到用户不再经过身份验证(您要查找的值将为空string)。

相反,当您首次对用户进行身份验证时,您会看到当前请求未经过身份验证,但在后续请求中将会被身份验证。