1

我正在使用此代码来检查请求是否来自页面,如果不是则重定向到某个地方。

string referer = Request.ServerVariables["HTTP_REFERER"];
            if (string.IsNullOrEmpty(referer))
            {
                Response.Redirect("/UnauthorizedAccess.aspx");
            }

它正在工作,我不知道它是否是完美的解决方案。但是我正在检查我的一个页面的加载事件。我怎样才能让它检查每个请求。我应该为我的所有页面检查这个。还有这是一个很好的方法。任何人都可以指出正确的方向。欢迎任何建议。

4

2 回答 2

2

如果您有希望在一堆页面的 OnLoad 上运行的逻辑。您可能应该创建一个BasePage派生自Page并具有内部逻辑的逻辑。然后,您想要该逻辑的所有页面都可以从而BasePage不是常规的Page.

另一种方法是使用母版页

注意:阅读 OP 后的附加评论。使用母版页时要注意的一件事是,母版页的 Page_Load 事件发生在内容页的 Page_Load 事件之后。换句话说,生命周期是这样的:

母版页初始化事件

内容页面初始化事件

内容页面加载事件

母版页加载事件

如果您的 response.redirect 将用户移动到具有相同母版页(以及相同的“验证”检查)的另一个页面,您可能会发现自己陷入了无限循环:)

于 2012-06-20T11:14:40.483 回答
2

如果您有很多页面,使用这些通用代码,那么一种可能的解决方案是创建您自己的MyPage类作为标准类的子Page类。在你的MyPage你可以使用类似的东西:

Page_Load(object sender, EventArgs e)
{
string referer = Request.ServerVariables["HTTP_REFERER"];
            if (string.IsNullOrEmpty(referer))
            {
                Response.Redirect("/UnauthorizedAccess.aspx");
            }
base.Page_Load(sender, e);
}

然后,您的任何页面都可以从这个自己的MyPage类而不是 .NET 的标准类继承。

通过这种方式,公共代码驻留在一个地方。如果有任何更改,您必须仅在此处进行修改。

或者另一种可能性,您可以考虑使用母版页。

于 2012-06-20T11:18:32.277 回答