C# 如何真正从网站注销,而不是简单地重定向到登录页面?
我正在使用response.redirect工具,当用户单击注销图像按钮但实际上不执行注销操作时,将用户发送回登录页面。当用户单击键盘上的backspace按钮或浏览器中的back按钮时,用户屏幕会显示回来。如何在c#asp.net中控制这种情况,我读过一些帖子说在重定向之前应该清除会话,但我不知道如何在我的表单中应用它。我已经附上了下面的编码,我请求有人帮助我以一种明确的方式摆脱这种情况 在Loginpage.aspx中C# 如何真正从网站注销,而不是简单地重定向到登录页面?,c#,asp.net,C#,Asp.net,我正在使用response.redirect工具,当用户单击注销图像按钮但实际上不执行注销操作时,将用户发送回登录页面。当用户单击键盘上的backspace按钮或浏览器中的back按钮时,用户屏幕会显示回来。如何在c#asp.net中控制这种情况,我读过一些帖子说在重定向之前应该清除会话,但我不知道如何在我的表单中应用它。我已经附上了下面的编码,我请求有人帮助我以一种明确的方式摆脱这种情况 在Loginpage.aspx中 protected void btnLogin_Click1(objec
protected void btnLogin_Click1(object sender, EventArgs e)
{
var query = (from row in db.Logins where row.Userid == txtUname.Text && row.Password == txtPassword.Text select new { row.Userid, row.Password, row.Admin_Roll, row.Manager_Roll}).Distinct();
if (query.Count() > 0)
{
if (query.Single().Admin_Roll == 1)
{
Response.Redirect("~/HomePage.aspx");
}
else if (query.Single().Manager_Roll == 1)
{
Response.Redirect("~/DetailsPage.aspx");
}
在马斯佩奇
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
Response.Redirect("~/LoginPage.aspx");
}
向我建议一些解决方案。在使用表单身份验证时,您可以主动将此人注销
protected void Page_Load(object sender, EventArgs e)
{
// The SignOut method invalidates the authentication cookie.
FormsAuthentication.SignOut();
Response.Redirect("Login.aspx");
}
请参阅Microsoft参考资料:使用表单身份验证时,您可以主动将此人注销
protected void Page_Load(object sender, EventArgs e)
{
// The SignOut method invalidates the authentication cookie.
FormsAuthentication.SignOut();
Response.Redirect("Login.aspx");
}
请参阅Microsoft参考资料:有几种方法 使用
会话清除您的会话。放弃并使用响应。重定向(“~/LoginPage.aspx”)代码>
然后可以使用以下方法清除缓存或清除历史记录
使用Codebehind
// Code disables caching by browser.
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();
使用JavaScript
<SCRIPT LANGUAGE="javascript">
function ClearHistory()
{
var backlen = history.length;
history.go(-backlen);
window.location.href = loggedOutPageUrl
}
</SCRIPT>
带更新面板
Page.ClientScript.RegisterStartupScript(this.GetType(),
Guid.NewGuid().ToString(),"ClearHistory();",true);
ScriptManager.RegisterStartupScript(this,this.GetType(),
Guid.NewGuid().ToString(),"ClearHistory();",true);
有几种方法
使用会话清除您的会话。放弃并使用响应。重定向(“~/LoginPage.aspx”)代码>
然后可以使用以下方法清除缓存或清除历史记录
使用Codebehind
// Code disables caching by browser.
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();
使用JavaScript
<SCRIPT LANGUAGE="javascript">
function ClearHistory()
{
var backlen = history.length;
history.go(-backlen);
window.location.href = loggedOutPageUrl
}
</SCRIPT>
带更新面板
Page.ClientScript.RegisterStartupScript(this.GetType(),
Guid.NewGuid().ToString(),"ClearHistory();",true);
ScriptManager.RegisterStartupScript(this,this.GetType(),
Guid.NewGuid().ToString(),"ClearHistory();",true);
你应该实施
然后,您可以使用以下方法:-
FormsAuthentication.SignOut();
Response.Redirect("~/LoginPage.aspx");
编辑:
表单身份验证用于internet web应用程序。如果您想验证不只是域一部分的用户(如windows身份验证),那么对于web应用程序,您应该使用表单身份验证。这可以通过在web.config文件中添加身份验证模式(如Forms
)来启用,如下所示:-
<authentication mode="Forms">
<forms loginUrl="Login.aspx" timeout="50"
defaultUrl="Default.aspx" protection="All">
</forms>
</authentication>
您需要在应该实现的MSDN
上详细阅读此内容
然后,您可以使用以下方法:-
FormsAuthentication.SignOut();
Response.Redirect("~/LoginPage.aspx");
编辑:
表单身份验证用于internet web应用程序。如果您想验证不只是域一部分的用户(如windows身份验证),那么对于web应用程序,您应该使用表单身份验证。这可以通过在web.config文件中添加身份验证模式(如Forms
)来启用,如下所示:-
<authentication mode="Forms">
<forms loginUrl="Login.aspx" timeout="50"
defaultUrl="Default.aspx" protection="All">
</forms>
</authentication>
您需要在MSDN
上详细阅读此信息,因为您必须使用C代码从浏览器中清除所有会话和cookie
- LogoutPage.aspx
`
`
同样,您还必须在页面加载时使用javascript清除浏览器历史记录
`
$(文档).ready(函数(){
var url=window.location.href;
window.history.go(-window.history.length);
window.location.href='Login.aspx';//重定向到登录页面
});
`
更新答案:
最好以logout.aspx
的形式为注销创建一个不同的页面,并在logout.aspx
页面的Page\u Load
事件中写入此代码。并在注销.aspx
页面的
标记中写入上述javascript。对于,您必须使用C#代码从浏览器中清除所有会话和cookie
- LogoutPage.aspx
`
`
同样,您还必须在页面加载时使用javascript清除浏览器历史记录
`
$(文档).ready(函数(){
var url=window.location.href;
window.history.go(-window.history.length);
window.location.href='Login.aspx';//重定向到登录页面
});
`
更新答案:
最好以logout.aspx
的形式为注销创建一个不同的页面,并在logout.aspx
页面的Page\u Load
事件中写入此代码。并在注销.aspx页面的
标记中写入上面的javascript。我认为您对后退按钮有问题,在用户注销时,代码下方将显示后退按钮
private void Page_Load(object sender, EventArgs e)
{
Response.Buffer= true;
Response.ExpiresAbsolute=DateTime.Now.AddDays(-1d);
Response.Expires =-1500;
Response.CacheControl = "no-cache";
if(Session["SessionId"] == null)
{
Response.Redirect ("Loginpage.aspx");
}
}
}
我认为你们有问题的后退按钮,下面的代码将迪亚布尔后退按钮时,用户注销
private void Page_Load(object sender, EventArgs e)
{
Response.Buffer= true;
Response.ExpiresAbsolute=DateTime.Now.AddDays(-1d);
Response.Expires =-1500;
Response.CacheControl = "no-cache";
if(Session["SessionId"] == null)
{
Response.Redirect ("Loginpage.aspx");
}
}
}
您也可以放弃他们的会话,只需添加session.audd(),尽管表单注销似乎是一个更可靠的答案
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
Session.Abandon();
Response.Redirect("~/LoginPage.aspx");
}
您也可以放弃他们的会话,只需添加session.audd(),尽管表单注销似乎是一个更可靠的答案
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
Session.Abandon();
Response.Redirect("~/LoginPage.aspx");
}
您已经在page_load中编写了代码,我正在母版页中使用注销图像按钮。您想让我将此代码放入母版页面加载还是其他页面加载…@Ezhilan-最好为注销创建另一个页面作为logout.aspx
,并将此代码写入page\u load
事件的logout.aspx
页面。在Logout.aspx
页面的
标记中写入上面的javascript您已经在页面加载中写入了代码,我正在母版页本身中使用注销图像按钮。您想让我将此代码放入母版页面加载还是其他页面加载…@Ezhilan-最好为注销创建另一个页面作为logout.aspx
,并将此代码写入page\u load
事件的logout.aspx
页面。并在Logout.aspx
页面的
标记中写入上述javascript