Sco*_*lby 5 vb.net asp.net forms-authentication
我有这个代码什么时候登录用户,该字符串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)))
Run Code Online (Sandbox Code Playgroud)
然后我有代码,我检查用户是否在公共类中的共享(静态)方法中登录,如下所示:
If HttpContext.Current.User.Identity.IsAuthenticated Then
EndIf
Run Code Online (Sandbox Code Playgroud)
这样做很好,但如果我在Page_load而不是类的共享方法中放入相同的行,它将永远不会进入此If语句
If HttpContext.Current.User.Identity.IsAuthenticated Then
EndIf
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,并且有一些方法可以重新编写它以在代码隐藏的Page_Load中工作,而不必将其放在一个类中.该类用于标题以允许访问某些页面 - 这样就可以了精细.但我需要在默认页面上另一种用户身份验证方式,根据用户登录或未登录的天气更改标签和按钮,这不能在课堂上完成.
小智 2
您是否尝试过将页面事件覆盖放入实际的页面事件覆盖(即 OnLoad)而不是 Page_Load 事件挂钩实现中?性能更高(调用层更少),生命周期略有不同,这可能适合您的需求,并可能提取这些症状的原因。
如果静态方法调用和 Page_Load 的上下文可能存在排序问题/竞争条件,我认为 Wiktor Zychla 已经为您指出了 fiddler 的方向。
| 归档时间: |
|
| 查看次数: |
294 次 |
| 最近记录: |