0

我有一个 videoWall 和一个 videoWallDetail 页面。目前,这是我在 videoWallDetail 页面上的内容:

    if (String.IsNullOrEmpty(Request["video_id"])) Response.Redirect("videoWall.aspx");

用户不应该以这种方式进入详情页面,但如果他们知道视频 id,有些人可能会通过在 url 中输入直接进入详情页面,因此如果用户在无效的地址栏。我的问题是无论如何我如何重定向回 videoWall 页面。如果用户没有单击链接以访问特定视频的详细信息页面,则无论他们是否在地址栏中输入有效的 ID,他们都会被退回。

提前致谢!

4

3 回答 3

1

您可以在页面上添加一个SessionvideoWall.aspx验证它们来自该页面:

视频墙.aspx

Session["fromVideoWall"] = true;
Response.Redirect("videoWallDetail.aspx?video_id=" + videoId.ToString());

videoWallDetail.aspx

if (Session["fromVideoWall"] != null && String.IsNullOrEmpty(Request["video_id"])) Response.Redirect("videoWall.aspx");
Session["fromVideoWall"] = null; //Setting the value back to null ensures the next access must have come from VideoWall.aspx too
于 2012-09-25T14:30:04.260 回答
0

1 你可以使用PostBackUrl方法

并在目标页面访问PreviousPage并获取数据

链接:http ://asp-net-example.blogspot.fr/2008/10/postbackurl-example-how-to-submit-page.html

2 你也可以重写你的网址HttpModule

链接:http: //msdn.microsoft.com/en-us/library/ms972974.aspx

于 2012-09-25T14:28:09.260 回答
0

如果不允许我在 videoWallDetail 页面的查询字符串中输入已知 ID,那么您不应将其公开为查询字符串参数。如果我想为该页面添加书签,或通过电子邮件向某人发送 URL 以供他们直接访问,该怎么办?那些是不允许的?

如果是这样,那么您需要删除该查询字符串参数。URL 栏应该是用户绕过的完全合法的方式。如果他们可以输入 URL 以访问他们不应该没有 400 或 500 错误的页面,那么这是您作为开发人员的错。

切换到使用会话变量或表单帖子来确认它们来自正确的位置,如果它们真的不应该出现在页面 B 上而不是来自页面 A。

于 2012-09-25T15:49:00.817 回答