ASP.NET:引发 OnLoggedIn 事件时用户仍未登录。

ASP.NET: User is still not logged in when OnLoggedIn event is raised.

我正在检查用户是否最后一次更改了密码。如果 超过 90 天,我会将用户重定向到密码更改页面。

protected void LoginUser_LoggedIn(object sender, EventArgs e)
{
   //has their password expired? 
   var _user = MembershipRepository.GetUser(this.LoginUser.UserName);

   if (_user != null 
             && _user.LastPasswordChangedDate.Date.AddDays(90) < DateTime.Now.Date) 
     {
       Server.Transfer("~/SiteNav/ChangePassword.aspx");
     }
}

我遇到的问题是,当显示 ChangePassword.aspx 时,用户未登录。除非我手动刷新页面,否则 LoginStatus 控件显示用户的用户名。

我试过用代码刷新页面,还是不行。

protected void Page_Load(object sender, System.EventArgs e)
{   
  var _url = HttpContext.Current.Request.Url.ToString();

   if (_url.ToLower().EndsWith("default.aspx")) 
   {
    Page.ClientScript.RegisterStartupScript(this.GetType(), 
         "RefreshPage", "window.location.reload();", true);
    Response.Redirect("~/SiteNav/ChangePassword.aspx");
   }
}

太混乱了。当我们到达 LoggedIn 事件时,我认为用户已经登录。

感谢您的帮助。

这可能是因为当您进行重定向时 cookie 未包含在响应中,因为此时 auth cookie 已在您的计算机上设置,但不会出现在请求中。设置 cookie 后,它不会在响应中自动更新。

请参阅 This Answer 以获取一些对其进行排序的代码