检查Page_Load()中的用户身份验证...在其他地方?

时间:2013-08-15 19:30:23

标签: asp.net authentication webforms

对于ASP.Net WebForms应用程序中的每个页面,我都会检查用户的访问权限:

protected void Page_Load(object sender, EventArgs e) {
    if (!UserCanAccessPage())
        RedirectToAccessNotPermitted();

    // < if user has access, set up the page >
}

我的问题是,单次检查是否足够,或者我应该检查所有其他处理程序:

protected void seriousDeleteButton_Click(object sender, EventArgs e) {

    // ** DO I NEED TO CHECK ACCESS AGAIN HERE? **

    // < do stuff that only some users have access to >
}

我知道在正常的页面生命周期中,应始终在事件处理程序之前调用Page_Load(),但我想知道是否有一种棘手的方法可以使用curl或其他方法命中其他ASP.NET端点用javascript或其他东西。

(我只是谈论常规的WebForms风格的回发,没有明确的AJAX内容。但当然UpdatePanel使用异步javascript,我确信其他控件可以做到。)

1 个答案:

答案 0 :(得分:2)

是的,这就足够了,因为每次用户请求新页面或回发页面时都会调用Page_Load。您无需再次检查按钮点击事件。

然而,对于一个有几页的网站来说很好。换句话说,如果你有多个页面,维护将是噩梦。

通常,您希望使用Form Authentication,并使用web.config将访问限制为页面。