我正在使用此代码检查请求是否来自某个页面,如果没有,则重定向到某个地方。
string referer = Request.ServerVariables["HTTP_REFERER"];
if (string.IsNullOrEmpty(referer))
{
Response.Redirect("/UnauthorizedAccess.aspx");
}
它正在工作,我不知道它是否是完美的解决方案。但是我正在检查我的一个页面的加载事件。如何检查每个请求。我应该检查所有我的这也是一个很好的方法。任何人都可以指出我正确的方向。欢迎提出任何建议。
答案 0 :(得分:2)
如果你有逻辑,你希望在你的一堆页面的OnLoad上运行。您应该创建一个BasePage
,它派生自Page
并具有内部逻辑。然后,您希望该逻辑输入的所有页面都可以从BasePage
而不是常规Page
派生。
另一种方法可以是使用Master Pages
注意:在阅读OP附加评论后。使用母版页时要注意的一件事是,母版页的Page_Load事件发生在内容页的Page_Load事件之后。 换句话说,生命周期是这样的:
母版页初始事件
内容页初始事件
内容页面加载活动
母版页加载事件
如果您的response.redirect将用户移动到具有相同母版页的另一个页面(并且进行相同的“验证”检查),您可能会发现自己处于无限循环中:)
答案 1 :(得分: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的标准类。
通过这种方式,公共代码位于一个地方。如果有任何变化,您只需在那里进行修改。
或者另一种可能性,您可以考虑使用母版页。