2011-12-16 45 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