2011-08-29 66 views
1

当我注销Page.User.Identity.Name的值时,仍然包含用户名,而不是将空字符串放在那里。 有人知道为什么吗? 我与Visual Studio 2010的工作,C#为什么在注销时page.user.identity.name不是“”

+6

您的注销代码是什么样的? – JConstantine

+0

我使用的asp.net网站(不是空的网站),其中包含自动登录(没有代码在c#登出,因为我看到) – ves

+0

如果它是setable,然后继续设置它与登出事件中的'String.Empty'。 – Tarik

回答

1

旁边什么身份的名称包含,我想你应该更关心的是:

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

谢谢,我试过了。但是,当我注销User.Identity.IsAuthenticated仍然是真实的(意味着我仍然登录)。你知道我是否可以控制登出代码(我没有找到它的服务器事件) – ves

+0

只是当我关闭浏览器的状态更新到正确的一个 – ves

0

我有过类似的问题给你。我做了一些研究,听起来好像它可能与页面缓存有关。

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

希望有所帮助。

+0

这是从我的主人:LogoutAction =“重定向”LogoutText =“注销”LogoutPageUrl =“〜/”,我需要改变什么? – ves

1

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

当你点击退出后,你需要火里面

FormsAuthentication.SignOut();

这应该删除与该用户的所有必需的会话/饼干具有这种代码的事件。

0

您是否正在查看与注销时相同的请求中的值?如果是这样,那么名称将在那里,因为用户仍然对该请求进行身份验证(身份验证在ASP.NET中很早发生)。在下一个请求中,您应该看到用户不再通过身份验证(您正在查找的值将是空的string)。相反,当你第一次认证一个用户时,你会看到当前的请求没有被认证,但是在随后的请求中他们会被认证。

相关问题