Как удалить файл cookie сеанса в ASP.NET 2010? - PullRequest
2 голосов
/ 03 февраля 2011

У меня есть веб-приложение ASP.NET 2010, которое использует элементы управления членством по умолчанию. Когда я вхожу в систему, элемент управления «Вход в систему» ​​на главном устройстве обнаруживает элемент управления «Выход из системы». Когда я нажимаю на него, он перенаправляет меня на страницу по умолчанию, но я замечаю, что, если я вернусь на страницу с проверкой подлинности, он впускает меня. Поэтому я добавил следующий код, когда щелкала ссылка на выход из системы, чтобы убедиться, что cookie уничтожен ,

FormsAuthentication.SignOut()
Session.Abandon()

Но я все еще могу перейти на аутентифицированную страницу. Это останавливает меня, только если я на самом деле закрываю браузер и снова открываю его.

Вот мой web.config ....

<authentication mode="Forms">
            <forms 
        name=".ASPXAUTH"
        loginUrl="~/Account/Login.aspx"
        protection="All"
        timeout="2880"
        slidingExpiration="true"
        defaultUrl="~/Authenticated/User/UserHome.aspx"
        />
        </authentication>

    <membership>
            <providers>
                <clear/>
                <add name="AspNetSqlMembershipProvider"
              passwordFormat="Hashed"
             type="System.Web.Security.SqlMembershipProvider" 
             connectionStringName="ApplicationServices" 
             enablePasswordRetrieval="false" 
             enablePasswordReset="true" 
             requiresQuestionAndAnswer="false" 
             requiresUniqueEmail="false" 
             maxInvalidPasswordAttempts="5" 
             minRequiredPasswordLength="6" 
             minRequiredNonalphanumericCharacters="0"
             passwordAttemptWindow="10" 
             applicationName="/"/>
            </providers>
        </membership>

        <profile>
            <providers>
                <clear/>
                <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
            </providers>
        </profile>

        <roleManager enabled="true">
   <providers>
    <clear />
    <add connectionStringName="ApplicationServices" applicationName="/"
     name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" />
    <add applicationName="/" name="AspNetWindowsTokenRoleProvider"
     type="System.Web.Security.WindowsTokenRoleProvider" />
   </providers>
  </roleManager>

1 Ответ

4 голосов
/ 15 июня 2011

Попробуйте это:

Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddYears(-1)
FormsAuthentication.SignOut()
Session.Abandon()

// Now, forward to a safe unauthenticated page if SignOut() doesn't already do this.
Response.Redirect("/default.aspx")

Эта попытка установить, чтобы файл cookie ASP.NET_SessionID истекал немедленно. Браузер должен удалить его из своей коллекции. Я не запускал это в VS2010, поэтому, пожалуйста, возьмите мой набор текста с небольшим количеством соли.

Дайте мне знать, если это работает для вас.

...