在处理任何其他代码VB.NET之前,请检查MasterPage中的登录

时间:2011-11-15 10:46:45

标签: asp.net vb.net session master-pages

我正在开发一个需要登录的应用程序。

我正在使用母版页和客户Web控件,这是我的主菜单系统。

主菜单访问数据库信息以提供通知和各种内容,除非用户已登录,否则这些内容都不会起作用。

我正在尝试下面的代码:

If Session("hgAdminUser") = "" And InStr(Request.ServerVariables("url"), "/Login.aspx") <= 0 Then _
            Response.Redirect("Login.aspx") ' if userSession is empty, redirect to login page.

在我的MasterPage代码后面,但它仍在尝试处理脚本,主要问题是它运行的是需要数据库访问的.ascs文件,如果没有Login的必需参数,它就无法完成。

我已经尝试在Page_PreInit子区域内运行它,也就是Page_Load和Page_Init,但在所有情况下它都会忽略它(或者可能不会忽略它,但是在它处理之前会出现错误)并返回一个很大的胖子错误由于我甚至不希望它运行的功能!!

所以基本上,我的问题是,如何检查会话变量,如果不存在会导致页面上的所有其他脚本被忽略并重定向?

这都是使用VB.NET

1 个答案:

答案 0 :(得分:0)

您必须为public内容页面和secure内容页面设计单独的母版页。

您可以在PreInit的处理程序或secure母版页的加载事件中编写以下代码。

If IsNothing(Session("hgAdminUser")) Then
   Response.Redirect("~/Login.aspx")
End If