2013-12-12 2 views
0

У меня есть старое приложение .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_AuthenticateRequestContext.User.Identity является FormsIdentity intance и Context.User.Identity.IsAuthenticated = true; но когда Application_PostAuthenticateRequest является экземпляром GenericIdentity и Context.User.Identity.IsAuthenticated = false.

Это происходит независимо от того, пользуюсь ли я IE, Firefox или Chrome. Почему мой пользователь изменил бы статус действительного экземпляра FormsIdentity на бесполезный экземпляр GenericIdentity между AuthenticateRequest и PostAuthenticateRequest?

ответ

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