【问题标题】:Logout Redirect on ASP.NET isn't workingASP.NET 上的注销重定向不起作用
【发布时间】:2012-03-13 17:11:07
【问题描述】:

我有一个测试网站,我在其中设置了 Loginstatus

[ <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect"     LogoutText="Log Out" LogoutPageUrl="Account/Logout.aspx"/> ]

但是,当我单击屏幕上的注销时.. 它转到此 url,实际上并没有调用注销页面。

“http://localhost/TestWebSite/Account/Login.aspx?ReturnUrl=%2fTestWebSite%2fAccount%2fLogout.aspx”

我试图让它调用一些逻辑来注销并删除我为我的自定义会员提供程序拥有的数据库行。这个逻辑放在logout.aspx.cs的页面加载中

Session.RemoveAll();

FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();

但它当然不会被调用... 当然,如果我在那里再次使用 ReturnUrl 登录,它会立即调用注销页面。 我很困惑,因为这不是我预期的行为,也没有记录。

请帮忙。

谢谢!

【问题讨论】:

  • 你确定它没有加载注销页面,然后立即重定向到登录页面,使用注销页面作为返回url?如果您删除重定向,或者改为重定向到另一个页面,会发生什么情况?
  • 我在 Page_Load 上放了一个断点,但它没有命中它。如果我离开该断点并使用链接上的 returnurl 再次登录,它确实会到达断点。所以我很确定它没有点击页面。
  • 我下载了 Fiddler...我知道发生了什么...当它调用 Logout.aspx 它返回一个 302(对象移至此处)并立即使用 returnurl 进入登录页面。 . 有什么想法吗?
  • (可能是一个愚蠢的问题:)当您进入注销页面时您是否已登录?如果没有,并且应用程序被配置为需要身份验证,ASP.NET 将使用您尝试访问的页面(在本例中为注销页面)的返回 url 自动将您带到登录页面而不会遇到断点。跨度>

标签: asp.net asp.net-membership customization


【解决方案1】:

我不确定这是否是您要查找的内容,但如果您只是想在用户注销后运行一些代码,请使用此方法 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.loginstatus.onloggedout.aspx

当用户按下注销按钮并已注销时调用。如果您愿意,您可以将代码放在那里,然后重定向到您的注销页面。

注意:还有这个方法可以用来确保用户在注销时满足某些条件,甚至取消注销。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.loginstatus.onloggingout.aspx

希望这会有所帮助。

【讨论】:

  • 是的,谢谢...这确实是我想要的...您知道此时找到用户名以将其传递给我在 OnLoggedOut 事件中的自定义方法的另一种方法吗?
  • Membership.GetUser().UserName 对于那些将来可能会关心的人......
猜你喜欢
  • 2016-10-28
  • 2023-04-08
  • 2020-02-09
  • 2023-03-10
  • 2016-08-23
  • 2013-09-15
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多