Получение 403: Запрещено: доступ запрещен, когда пользователь закрывает зарегистрированный сеанс случайно - PullRequest
2 голосов
/ 19 января 2012

Я получаю 403, когда пользователь случайно закрывает свой браузер, не выходя из системы, и снова пытается открыть URL.

Когда он возвращается, веб-сайт выдает 403. Чтобы временно разрешитьПроблема Я вычистил все куки, и доступ снова включен.

Ошибка: 403 - Запрещено: доступ запрещен.У вас нет разрешения на просмотр этого каталога или страницы с использованием предоставленных вами учетных данных.

Подробности для устранения неполадок: Файл Web.Config

  <forms loginUrl="index.aspx" 
         protection="All" path="/" 
         timeout="300" 
         name="AppNameCookie" 
         slidingExpiration="true" 
         defaultUrl="index.aspx" 
         cookieless="UseCookies" 
         enableCrossAppRedirects="false" 
         requireSSL="false"/>

Код для проверки подлинностипользователи

                ' Create the cookie that contains the forms authentication ticket                
                Dim authCookie As HttpCookie = FormsAuthentication.GetAuthCookie(sUserName, False)

                'HttpOnly cookie means it is not accessible by the client through ECMAScript.
                authCookie.HttpOnly = True

                authCookie.Expires = Now.AddMinutes(300)


                ' Get the FormsAuthenticationTicket out of the encrypted cookie                
                Dim ticket As FormsAuthenticationTicket = FormsAuthentication.Decrypt(authCookie.Value)

                ' Create a new FormsAuthenticationTicket that includes our custom User Data                
                Dim newTicket As FormsAuthenticationTicket = New FormsAuthenticationTicket(ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration, ticket.IsPersistent, userDataString)

                ' Update the authCookie's Value to use the encrypted version of newTicket                
                authCookie.Value = FormsAuthentication.Encrypt(newTicket)

                ' Manually add the authCookie to the Cookies collection                
                Response.Cookies.Add(authCookie)
                ' Determine redirect URL and send user there  

Я думаю, что есть проблема с куки, но я не могу определить причину этой проблемы.

ОБНОВЛЕНИЕ : я нашел, какпродублируйте эту проблему

Войдите как пользователь и закройте браузер, не выходя из системы.Попробуйте открыть домашнюю страницу и выдает ошибку.

1 Ответ

0 голосов
/ 20 января 2012

Проблема была решена.

Конфликт был с AuthCookie на странице входа в систему, и следующая строка вызывала проблему.

authCookie.HttpOnly = True
authCookie.Expires = Now.AddMinutes(120)
Dim ticket As FormsAuthenticationTicket = FormsAuthentication.Decrypt(authCookie.Value)
Dim newTicket As FormsAuthenticationTicket = New FormsAuthenticationTicket(ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration, False, userDataString)
authCookie.Value = FormsAuthentication.Encrypt(newTicket)

Заменены на следующие строки, они работают нормально.

Dim asx As New FormsAuthenticationTicket(sdata, False, 60)
Now encrypt the ticket.
Dim encryptedTicket As String = FormsAuthentication.Encrypt(asx)
Dim authCookie As New HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket)
Response.Cookies.Add(authCookie)
...