需要帮助了解事件处理程序的控制流程

时间:2009-06-05 21:56:53

标签: asp.net security

目前,我有一些代码如下:

protected override void OnLoad(EventArgs e)
{
    if(IsAuthorized(param1, param2, ...))
    {
        //snip
    }
    else
    {
        Response.Write("Not authorized");
    }
}

protected void MyButton1_Click(object sender, EventArgs e)
{
    //snip
}

protected void MyButton2_Click(object sender, EventArgs e)
{
    //snip
}

当用户登录时,他们可以转到该页面并运行OnLoad。现在,如果他们的会话在页面仍然打开的情况下过期,然后尝试单击MyButton1,他们将会收到“未授权”,但MyButton1_Click中的代码仍会运行。有人能指出我如何正确处理这种情况的方向吗?我假设我可以抛出新的SecurityException(),然后在catch(SecurityException)中显示我想要的任何错误,但事件处理程序仍然运行。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以对代码进行身份验证检查,例如MSDN中的此代码:

private void Page_Load(object sender, EventArgs e)
{
    // Check whether the current request has been
    // authenticated. If it has not, redirect the 
    // user to the Login.aspx page.
    if (!Request.IsAuthenticated)
    {
        Response.Redirect("Login.aspx", true);
    }
}

我认为这比Response.Write()更清晰,因为用户清楚地看到他们已经不再通过身份验证了。