2011-12-16 43 views
0

当我单击asp.net应用程序中的LoginView时,我想过期登录Cookie。我试过运行代码OnViewChanged和OnViewChanging,但代码似乎没有执行。从LoginView中过期Cookie

<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。如果我点击loginview,我只是继续重定向回主页面,因为过期cookie的代码似乎永远不会运行。我知道这可能很简单,但我是C#的新手,并且自学成才。请不要发表评论只是为了评论这应该是多么容易,因为我很清楚这一点。

回答

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 
    } 
} 
+0

工作完美。谢谢!! – jmease 2011-12-16 22:55:38