如何在asp.net应用程序中注销按钮Windows身份验证

时间:2015-04-06 11:15:21

标签: c# asp.net windows-authentication

在我的项目中,我正在使用Windows身份验证登录。 注销按钮是必需的。

如果单击Logout按钮页面应重定向到Logout.aspx。 在Logout.aspx中如果我按下重定向的浏览器中的后退按钮。

如何控制不应重定向到LogOut页面并要求窗口验证登录?

3 个答案:

答案 0 :(得分:6)

在Windows身份验证中,由于您没有使用IIS进行身份验证,因此无法注销。您正在使用该操作系统,即使您在同一浏览器中注销,然后在下一个请求中,您将自动在同一浏览器中登录。

因此不可能在windows auhtentication中注销。

在堆栈溢出中看到同样的问题。

ASP.NET Windows Authentication logout

答案 1 :(得分:0)

在每个.aspx页面中使用此脚本

<script type = "text/javascript" >
        function changeHashOnLoad() {
            window.location.href += "#";
            setTimeout("changeHashAgain()", "50");
        }

        function changeHashAgain() {
            window.location.href += "1";
        }

        var storedHash = window.location.hash;
        window.setInterval(function () {
            if (window.location.hash != storedHash) {
                window.location.hash = storedHash;
            }
        }, 50);


</script>

答案 2 :(得分:0)

我有一个网络形式的解决方案,您可以使用它,我希望对您有用。

<强> logout.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="logout.aspx.cs" Inherits="logout" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <meta http-equiv="Cache-Control" content="no-cache">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Expires" content="0">
</head>
<body>
    <script type="text/javascript">
        function HandleResult(arg, context) {
            window.location = "/Login.aspx";
        }
    </script>
    <form id="form1" runat="server">
    </form>
    <script>
        CallServer('LoGout', '');
            var Backlen=history.length;   
        history.go(-Backlen);   
        window.location.href = "/Login.aspx";

    </script>
</body>
</html>

logout.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


public partial class logout : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
{
    public void RaiseCallbackEvent(string eventArgument)
    {
    }

    public string GetCallbackResult()
    {
        return "";
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        ClearAll();
        ClientScriptManager cm = Page.ClientScript;
        string cbReference = cm.GetCallbackEventReference(this, "arg", "HandleResult", "");
        string cbScript = "function CallServer(arg, context){" + cbReference + ";}";
        cm.RegisterClientScriptBlock(this.GetType(), "CallServer", cbScript, true);
        cm.RegisterStartupScript(this.GetType(), "cle", "windows.history.clear", true);
        Response.Redirect("/login.aspx");

    }
    protected void Page_Init(object sender, EventArgs e)
    {
        ClearAll();
    }

    void ClearAll()
    {
        Session.RemoveAll();
        System.Web.Security.FormsAuthentication.SignOut();
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
        Response.Cache.SetNoStore();


    }
}

我的项目工作正常。