加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 表单身份验证无法正确验证用户

发布时间:2020-12-16 03:21:59 所属栏目:asp.Net 来源:网络整理
导读:我有这个代码什么时候登录用户,该字符串sUserData已正确设置. Dim sUserData As String = HttpContext.Current.Request.Cookies("UserID").Value "|" HttpContext.Current.Request.Cookies("UserName").Value "|" HttpContext.Current.Request.Cookies("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中工作,而不必将其放在一个类中.该类用于标题以允许访问某些页面 – 这样就可以了精细.但我需要在默认页面上另一种用户身份验证方式,根据用户登录或未登录的天气更改标签和按钮,这不能在课堂上完成.

解决方法

您是否尝试将页面事件覆盖放入实际的页面事件覆盖(即OnLoad)而不是Page_Load事件挂钩实现?更高性能(更少的调用层次),生命周期的微小差异可能适合您的需求,并可能提炼出这些症状的原因.

如果静态方法调用的上下文和Page_Load可能存在顺序问题/竞争条件,我认为Wiktor Zychla已经指向了fiddler的方向.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读