在我的母版页上,我在Page_Load
事件中有一个小方法,用于检查用户是否已登录,如果没有,则将其重定向到“登录”页面。
问题是,对于我的某些页面,Page_Load
事件假定记录的用户都在,并且这些事件似乎在主页面中的登录检查之前触发,这会导致错误。
有什么方法可以解决这个问题?我可以在我的页面中使用除Page_Load之外的任何事件,在母版页后触发吗?
答案 0 :(得分:25)
您有一个丰富的Page Cycle,可以使用很多事件。
也许您可以使用Page_Init
来检查用户是否在主页面中登录。
或者在其他页面中使用Page_PreRender
。
答案 1 :(得分:2)
如果您需要在页面事件之前在母版页Page_Load中发生事情,请使用Page_PreRender
protected void Page_PreRender(object sender, EventArgs e)
在实际页面中。
答案 2 :(得分:1)
您必须通过执行以下操作检查用户是否已登录这些功能:if (this.Page.User.Identity.IsAuthenticated == true) { .. }
。没有什么可以假设,这是你正在经历的。您还可以将登录检查移至Page_Init,甚至将其移至每个页面加载运行的HTTP模块;在那里,您可以访问各种事件,包括应用程序身份验证/授权。
如果您正在使用表单身份验证,则可以使用配置文件通过授权元素来驱动它。
<system.web>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
</system.web>
<location path="login.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
HTH。