我正在开发一个需要登录的应用程序。
我正在使用母版页和客户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
答案 0 :(得分:0)
您必须为public
内容页面和secure
内容页面设计单独的母版页。
您可以在PreInit的处理程序或secure
母版页的加载事件中编写以下代码。
If IsNothing(Session("hgAdminUser")) Then
Response.Redirect("~/Login.aspx")
End If