目前,我有一些代码如下:
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)中显示我想要的任何错误,但事件处理程序仍然运行。提前谢谢。
答案 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()
更清晰,因为用户清楚地看到他们已经不再通过身份验证了。