Как уничтожить значение предварительного cookie-файла

#asp.net

#asp.net

Вопрос:

У меня есть проблема с уничтожением значения pre cookie в asp.net . Позвольте мне объяснить описание проблемы здесь.

На нашем веб-сайте есть две страницы. Допустим, login.aspx и mainpage.aspx. Мое требование — изменить идентификатор сеанса после входа в систему. Для этого случая мы интегрировали следующий скрипт на странице входа, прежде чем перенаправлять на главную страницу что-то вроде этого, чтобы изменить идентификатор сеанса после входа в систему.

  protected void btnLogIn_Click(object sender, EventArgs e)
    {

        regenerateId();
        Response.Redirect("mainpage.aspx");
}




void regenerateId()
    {
        System.Web.SessionState.SessionIDManager manager = new System.Web.SessionState.SessionIDManager();
        string oldId = manager.GetSessionID(Context);
        string newId = manager.CreateSessionID(Context);
        bool isAdd = false, isRedir = false;
        manager.SaveSessionID(Context, newId, out isRedir, out isAdd);
        HttpApplication ctx = (HttpApplication)HttpContext.Current.ApplicationInstance;
        HttpModuleCollection mods = ctx.Modules;
        System.Web.SessionState.SessionStateModule ssm = (SessionStateModule)mods.Get("Session");
        System.Reflection.FieldInfo[] fields = ssm.GetType().GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
        SessionStateStoreProviderBase store = null;
        System.Reflection.FieldInfo rqIdField = null, rqLockIdField = null, rqStateNotFoundField = null;
        foreach (System.Reflection.FieldInfo field in fields)
        {
            if (field.Name.Equals("_store")) store = (SessionStateStoreProviderBase)field.GetValue(ssm);
            if (field.Name.Equals("_rqId")) rqIdField = field;
            if (field.Name.Equals("_rqLockId")) rqLockIdField = field;
            if (field.Name.Equals("_rqSessionStateNotFound")) rqStateNotFoundField = field;
        }
        object lockId = rqLockIdField.GetValue(ssm);
        if ((lockId != null) amp;amp; (oldId != null)) store.ReleaseItemExclusive(Context, oldId, lockId);
        rqStateNotFoundField.SetValue(ssm, true);
        rqIdField.SetValue(ssm, newId);

        
    }
  

После перенаправления на главную страницу мы можем увидеть, что идентификатор сеанса был изменен. Это нормально до сих пор.

Но все еще может получить доступ к старым деталям сеанса. Если мы введем старый идентификатор сеанса, мы все равно сможем увидеть всю внутреннюю информацию на главной странице. Итак, как уничтожить значение pre cookie после входа в систему. Не могли бы вы объяснить, как справиться с этим случаем.

Комментарии:

1. Почему вы используете веб-формы?

2. Что вы подразумеваете под «предварительным cookie»?

3. Интегрированный вами «скрипт» совершенно ужасен. Вы не должны использовать отражение для этого.