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

时间:2016-05-10 14:23:37

标签: asp.net membership login-control

我正在检查用户上次更改密码的时间。如果超过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事件时,我虽然用户已经登录了。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这可能是因为当你进行重定向时,cookie没有被包含在响应中,因为在你的机器上已经设置了auth cookie,但是还没有。在请求中。当设置cookie时,它不会在响应中自动更新。

有关应对其进行排序的代码,请参阅This Answer