对于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,我确信其他控件可以做到。)
答案 0 :(得分:2)
是的,这就足够了,因为每次用户请求新页面或回发页面时都会调用Page_Load。您无需再次检查按钮点击事件。
然而,对于一个有几页的网站来说很好。换句话说,如果你有多个页面,维护将是噩梦。
通常,您希望使用Form Authentication,并使用web.config将访问限制为页面。