ASP.NET page 'Page_Load' firing before Master Page&#

本文关键字:Page before Master firing Load NET ASP page | 更新日期: 2023-09-27 17:49:18

在我的主页上,我在Page_Load事件中有一个小方法,检查用户是否登录,并将其重定向到登录页面,如果没有。

问题是,对于我的一些页面,Page_Load事件假定登录的用户已经登录,并且这些事件似乎在母版页的登录检查之前触发,从而导致错误。

有什么方法可以解决这个问题?除了Page_Load之外,我可以在我的页面中使用任何事件,这会在母版页之后触发 ?

ASP.NET page 'Page_Load' firing before Master Page&#

你有一个丰富的Page Cycle,有很多事件可以使用。也许您可以使用Page_Init来检查用户是否已登录到母版页。或者在其他页面使用Page_PreRender

如果您需要在页面事件之前在MasterPage Page_Load中发生的事情,请使用Page_PreRender

protected void Page_PreRender(object sender, EventArgs e)

您将必须检查用户是否登录了这些功能,执行:if (this.Page.User.Identity.IsAuthenticated == true) { .. }。没有什么是可以假设的,这就是你正在经历的。你也可以移动你的登录检查到Page_Init,或者甚至移动到HTTP模块,运行在每个页面加载;在这里,您可以访问各种事件,包括应用程序身份验证/授权。

如果您正在使用表单身份验证,您可以使用配置文件来驱动它,通过authorization元素。

<system.web>
  <authorization>
    <deny users="?" />
    <allow users="*" />
  </authorization>
</system.web>
<location path="login.aspx">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>

HTH .