Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何真正从网站注销,而不是简单地重定向到登录页面?_C#_Asp.net - Fatal编程技术网

C# 如何真正从网站注销,而不是简单地重定向到登录页面?

C# 如何真正从网站注销,而不是简单地重定向到登录页面?,c#,asp.net,C#,Asp.net,我正在使用response.redirect工具,当用户单击注销图像按钮但实际上不执行注销操作时,将用户发送回登录页面。当用户单击键盘上的backspace按钮或浏览器中的back按钮时,用户屏幕会显示回来。如何在c#asp.net中控制这种情况,我读过一些帖子说在重定向之前应该清除会话,但我不知道如何在我的表单中应用它。我已经附上了下面的编码,我请求有人帮助我以一种明确的方式摆脱这种情况 在Loginpage.aspx中 protected void btnLogin_Click1(objec

我正在使用response.redirect工具,当用户单击注销图像按钮但实际上不执行注销操作时,将用户发送回登录页面。当用户单击键盘上的backspace按钮或浏览器中的back按钮时,用户屏幕会显示回来。如何在c#asp.net中控制这种情况,我读过一些帖子说在重定向之前应该清除会话,但我不知道如何在我的表单中应用它。我已经附上了下面的编码,我请求有人帮助我以一种明确的方式摆脱这种情况

在Loginpage.aspx中

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