我有這段代碼何時登錄用戶,該字符串sUserData設置正確。表單身份驗證不正確驗證用戶
Dim sUserData As String = HttpContext.Current.Request.Cookies("UserID").Value & "|" & HttpContext.Current.Request.Cookies("UserName").Value & "|" & HttpContext.Current.Request.Cookies("UserEmail").Value
Dim fat As FormsAuthenticationTicket = New FormsAuthenticationTicket(1, _
HttpContext.Current.Session("UserID"), DateTime.Now, _
DateTime.Now.AddDays(6), True, sUserData, _
FormsAuthentication.FormsCookiePath)
HttpContext.Current.Response.Cookies.Add(New HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(fat)))
然後,我有代碼,我檢查用戶是否在共享(靜態)方法簽署了在一個公共類這樣的:
If HttpContext.Current.User.Identity.IsAuthenticated Then
EndIf
這工作得很好,但如果我擺在Page_Load中,而不是共享的方法在同一行一類的它永遠不會進入這個if語句
If HttpContext.Current.User.Identity.IsAuthenticated Then
EndIf
這究竟是爲什麼,是有一些方法來重新寫的代碼 - 工作在Page_L後面oad,而不必將其放入類中,該類用於標題以允許訪問某些頁面 - 因此可以正常工作。但是我需要在默認頁面上使用另一種用戶身份驗證方式來根據用戶登錄的天氣來更改標籤和按鈕,並且這不能在課程中完成。
是否有任何特定的原因,你手動創建該cookie,而不是使用'FormsAuthentication.SetAuthCookie()'你的代碼可能工作,但.NET會爲你做。 (只是一個觀察)。 – 2012-07-30 20:20:01
是的,有 - 它必須是這樣的,已經有10k以上的用戶,我的工作是不改變所有它只是讓我的代碼與現有分區工作 – 2012-07-30 20:20:51
是不是你試圖檢查中的國旗SAME請求你創建cookie?這不起作用,因爲上下文將從您設置cookie的請求旁邊的請求開始。 – 2012-07-30 20:24:23