我是一名新开发人员,我被分配了解决我们的注销功能无法正常工作的任务。我已经尝试了所有可以找到的方法。下面是我保留的日志,其中包括我使用过的方法。
在CommonHeader.ascx表单中添加了一个注销按钮
在logout.aspx.vb表单中尝试过多种方法,以使其结束或清除会话,但它们都不起作用。
一个。 logout.aspx.vb形式中定义的ClearSession子例程:
Session("Variable") = ""
FormsAuthentication.SignOut()
Session.RemoveAll()
Session.Abandon()
Session.Clear()
湾同时将其添加到Page_Load子例程的顶部:
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache)
HttpContext.Current.Response.Cache.SetNoServerCaching()
HttpContext.Current.Response.Cache.SetNoStore()
℃。还将ClearSession子例程从Session.Contents.Remove("Variable")
Session("Variable") = ""
这些方法都不起作用。我们使用 Siteminder ,我一直想知道这是否是问题的根源。我在清除使用 Siteminder 的会话时找不到任何内容。另请注意,此应用程序使用Visual Studio 2003进行编码。
这是我在ascx文件中使用的按钮的代码:
athp:TopNavText Title =“Log Out”NavigateUrl =“logout.aspx”Target =“_ top”/
然后在“logout.aspx”表单上,我尝试使用上述方法之一或每种方法的组合。这是我触摸它之前的代码:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ClearSession()
Response.Redirect("login.aspx")
End Sub
Public Sub ClearSession()
Session("Variable") = ""
End Sub
答案 0 :(得分:2)
最后想出了解决方案,我最初没有在删除包含siteminder会话ID的cookie时定义域。我使用的代码如下:
Dim cookie3 As HttpCookie = New HttpCookie("SMSESSION", "NO")
cookie3.Expires = DateTime.Now.AddYears(-1)
cookie3.Domain = ".domain.com"
Response.Cookies.Add(cookie3)
Response.Redirect("login.aspx")
答案 1 :(得分:0)
这个问题:formsauthentication-signout-does-not-log-the-user-out描述了即使在调用FormsAuthentication.SignOut()之后也没有清除cookie的问题。这听起来像是你的问题,他们说这是.NET的一个错误,而你的使用1.1听起来很明显。
答案 2 :(得分:0)
HI朋友请在用户控件中添加按钮的点击事件。在点击事件中,请添加以下代码并删除所有其他代码。
会话(“变量”)=“”;
答案 3 :(得分:0)
看看这篇文章
无论是c sharp还是vb相同的规则仍然适用。您正在调用会话放弃然后清除,但是当您打电话清除时,会话应该已经消失。
Clear将会话状态与其中的对象保持在一起,因此通过在放弃后调用它实际上可以为用户重新初始化会话,但是使用已清除的变量。
如果你有一个
,请查看这篇文章,了解订单和杀死会话的正确方法并重定向到登录页面答案 4 :(得分:0)
首先要注意的是,如果您使用的是表单身份验证,则Session与用户是否登录完全无关。
如果CookiesSupported为false,则调用FormsAuthentication.SignOut将从cookie或URL中删除表单身份验证票证信息。
但它对Session中存储的内容没有任何影响。
<强>更新强>
为什么你认为注销(FormsAuthentication.SignOut)不起作用?当您点击退出时,您期望发生什么?实际发生了什么?
我将删除所有代码以清除Session并查看此内容。例如,使用Fiddler等工具查看http流量:您应该能够看到单击“注销”时删除了FormsAU身份验证Cookie。