2011-02-03 3 views
2

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

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

Можете ли вы показать нам свой web.config? –

+0

Отправьте свой раздел авторизации. Если у вас его нет, это объясняет это поведение. – mxmissile

ответ

4

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

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") 

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

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

Смежные вопросы