我有丢失数据的用户因为他们坐在页面上的时间过长,然后被要求重新登录。我想执行以下操作:
1)我不想将它们重定向到登录页面,而是取消当前请求并给用户一个弹出对话框以登录。
2)当登录成功时,我希望将用户发送回他们的表单,所有数据都保持不变。 (如果请求可以通过而不将它们发送回该表单,那就更好了,但这是可选的)。
如何拦截这些身份验证请求,并向用户显示弹出式登录信息?
我正在使用ASP.net表单身份验证。
答案 0 :(得分:2)
您可以在Global.asax
中的Application_AuthenticateRequest上拦截此事件但是,您需要更具体,是否使用ASP.NET Forms身份验证?
添加了:
试试这个并回复我
在Global.asax
中void Application_AuthenticateRequest(object sender, EventArgs e)
{
if (HttpContext.Current.User == null)
{
FormsAuthenticationTicket ticket = new
FormsAuthenticationTicket(1, "Anonymous", DateTime.Now, DateTime.Now.AddMinutes(30), false, "Anonymous");
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie =
new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
Response.Cookies.Add(cookie);
FormsIdentity id = new FormsIdentity(ticket);
System.Security.Principal.GenericPrincipal principal = new System.Security.Principal.GenericPrincipal(id, ticket.UserData.Split(new char[] { '|' }));
Context.User = principal;
}
}
在网络表单中
string cookieName = FormsAuthentication.FormsCookieName;
HttpCookie authCookie = Context.Request.Cookies[cookieName];
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
if (authTicket.UserData == "Anonymous")
{
//Throw the login popup
}
else
{
//Some Code
}
答案 1 :(得分:0)
您使用的是母版页吗?您可以在需要登录时重定向到那里,而不是单独的登录页面。在主页面的登录代码中,您决定是否重定向到正确的独立登录页面,或者将登录div作为弹出窗口显示。