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 以获取一些对其进行排序的代码
我正在检查用户是否最后一次更改了密码。如果 超过 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 以获取一些对其进行排序的代码