У меня есть старое приложение .NET 3.5 WebForms, которое я пытаюсь перетащить в это десятилетие, перейдя на .NET 4. Однако, похоже, что что-то нарушило процесс аутентификации во время Обновить.Ошибка аутентификации форм после обновления до .NET 4
Мои папки выкладываются как этот
/Login.aspx
/Home.aspx
/Content/Default.aspx
/Content/Stuff.aspx
В моей web.config, я настроил аутентификации и авторизации следующим образом:
<authentication mode="Forms">
<forms loginUrl="Login.aspx" requireSSL="true" name="MyCookie" path="/" cookieless="UseCookies" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
, а затем добавил
<location path="Login.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
, с тем, что пользователи, не прошедшие проверку подлинности, должны иметь доступ только к Login.aspx
.
Когда я пытаюсь получить доступ к приложению, я направляюсь на страницу входа; Затем я могу ввести свои учетные данные, аутентификация форм делает все, и я аутентифицирован. Однако, когда приложение затем перенаправляет меня на Home.aspx
, оно сразу же перенаправляет меня обратно на Login.aspx?ReturnUrl=%2fHome.aspx
, поэтому очевидно, что у меня нет доступа.
В моем global.asax я добавил пустые обработчики событий для Application_AuthenticateRequest
и Application_PostAuthenticateRequest
и установил на них контрольные точки. При ударе Application_AuthenticateRequest
Context.User.Identity
является FormsIdentity
intance и Context.User.Identity.IsAuthenticated = true
; но когда Application_PostAuthenticateRequest
является экземпляром GenericIdentity
и Context.User.Identity.IsAuthenticated = false
.
Это происходит независимо от того, пользуюсь ли я IE, Firefox или Chrome. Почему мой пользователь изменил бы статус действительного экземпляра FormsIdentity на бесполезный экземпляр GenericIdentity между AuthenticateRequest и PostAuthenticateRequest?