0

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を期限切れにします。ロードする。loginviewをクリックすると、Cookieを期限切れにするコードが実行されていないように見えるため、メインページにリダイレクトされ続けます。これはおそらく地獄のように単純なことですが、私はC#を初めて使用し、独学で学んでいます。私はそれをよく知っているので、これがどれほど簡単であるべきかについてコメントするためだけにコメントを送らないでください。

4

1 に答える 1

1

ViewChangeイベントがこれで機能するとは思いません。

これに対する簡単な解決策は、「LoggedInTemplate」に表示されるログインURLに「forceLogout」パラメーターを追加することです。ログインページの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
    }
}
于 2011-12-16T22:36:15.060 に答える