我有我試圖拖動到這十年的老.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,都會發生這種情況。爲什麼我的用戶會從AuthenticateRequest和PostAuthenticateRequest之間的有效FormsIdentity實例變爲無用的GenericIdentity實例?