我正在检查用户上次更改密码的时间。如果超过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事件时,我虽然用户已经登录了。
感谢您的帮助。
答案 0 :(得分:1)
这可能是因为当你进行重定向时,cookie没有被包含在响应中,因为在你的机器上已经设置了auth cookie,但是还没有。在请求中。当设置cookie时,它不会在响应中自动更新。
有关应对其进行排序的代码,请参阅This Answer