我在HTTPModule的帮助下编写一个类,在访问任何页面之前检查会话中的userIdentity。如果会话中的变量为null或为空,我将在会话过期页面中重定向用户。
课堂代码:
public class SessionUserValidation : IHttpModule
{
public void Dispose()
{
}
public void Init(HttpApplication application)
{
application.PreRequestHandlerExecute += new
EventHandler(application_PreRequestHandlerExecute);
}
private void application_PreRequestHandlerExecute(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
IHttpHandler handler = application.Context.Handler;
Page reqPage = handler as Page;
if (reqPage != null)
{
reqPage.PreInit += new EventHandler(CustomModule_Init);
}
}
private void CustomModule_Init(object sender, EventArgs e)
{
Page Page = sender as Page;
if (!Page.Request.Url.ToString().Contains("mySessionExpired.aspx") &&
!Page.Request.Url.ToString().Contains("myLogin.aspx"))
{
if (HttpContext.Current.Session["encryptedUserId"] == null)
{
HttpContext.Current.Response.Redirect("../Modulenames/mySessionExpired.aspx", false);
}
}
}
}
一切都运行正常,唯一的问题是它在URL中添加了某种加密,我的面包屑在页面中不起作用。网址转换如下:
:// thewebsite /项目/的(S(jnd4o5ljdgs0vq1zd4niby4a)) /Pages/mySessionExpired.aspx
不知道为什么要添加这个文本片段...请帮助
- 阿图