我在登录 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
这很好用,但是如果我将同一行放在 Page_load 而不是类的共享方法中,它将永远不会进入这个 If 语句
If HttpContext.Current.User.Identity.IsAuthenticated Then
EndIf
为什么会发生这种情况,是否有某种方法可以重新编写它以在代码隐藏的 Page_Load 中工作,而不必将其放在一个类中,该类用于标题中以允许访问某些页面 - 这样就可以了美好的。但是我需要另一种在默认页面上对用户进行身份验证的方式来根据用户是否登录的天气更改标签和按钮,而这不能在课堂上完成。