从LoginView过期Cookie

时间:2011-12-16 22:12:42

标签: c# loginview

每当点击我的asp.net应用程序中的LoginView时,我想使我的登录cookie失效。我已经尝试运行代码OnViewChanged和OnViewChanging,但代码似乎没有执行。

<asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false" 
                OnViewChanging="HeadLoginView_ViewChanging">

    protected void HeadLoginView_ViewChanging(object sender, EventArgs e)
    {
        if (Request.Cookies["storeNum"] != null)
        {
            HttpCookie myCookie = new HttpCookie("storeNum");
            myCookie.Expires = DateTime.Now.AddDays(-1d);
            Response.Cookies.Add(myCookie);
        }
    }

我的login.aspx页面在Page_Load上检查此cookie并自动将用户重定向到网站的主页面,省去了登录的麻烦。但如果他们选择重新登录,我想让cookie过期要加载的登录页面。如果我点击登录视图,我只是不断被重定向回主页面,因为到期cookie的代码似乎永远不会运行。我知道这可能很简单,但我是C#的新手并且是自学成才。请不要发表评论只是为了说明这应该是多么容易,因为我很清楚这一点。

1 个答案:

答案 0 :(得分:1)

我认为ViewChange事件不适用于此。

一个简单的解决方案是将“forceLogout”参数添加到“LoggedInTemplate”中显示的登录URL。在登录页面的Page_Load方法中查找参数。如果不存在,请继续进行重定向。如果存在,则将用户注销,不要进行重定向。

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack && string.IsNullOrEmpty(Request.QueryString["forceLogout"]))
    {
        // log the user out 
    }
    else
    {
        // Your original logic
    }
}