Userにサインインするときにこのコードがあり、その文字列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
これは問題なく機能しますが、クラスのSharedメソッドの代わりにPage_loadに同じ行を配置すると、このIfステートメントには含まれません。
If HttpContext.Current.User.Identity.IsAuthenticated Then
EndIf
なぜこれが起こっているのですか、そしてこれをクラスに入れる代わりにコードビハインドPage_Loadで機能するように書き直す方法があります、クラスは特定のページへのアクセスを許可するためにヘッダーで使用されます-それで機能します大丈夫。しかし、ユーザーがログインしているかどうかに基づいてラベルとボタンを変更するには、デフォルトページでユーザーを認証する別の方法が必要です。これはクラスでは実行できません。