我有一个videoWall和一个videoWallDetail页面。目前,这是我在videoWallDetail页面上的内容:
if (String.IsNullOrEmpty(Request["video_id"])) Response.Redirect("videoWall.aspx");
用户不应该以这种方式进入详细信息页面,但是如果他们知道视频ID,有些人可能会直接进入详细信息页面,只需在网址中输入,这样如果用户输入的话,会将用户重定向回videoWall页面。地址栏中的视频ID无效。我的问题是如何重定向回到videoWall页面。如果用户未点击某个链接进入特定视频的详细信息页面,则无论他们是否在地址栏中输入了有效的ID,都会收到回复。
提前致谢!
答案 0 :(得分:1)
您可以在Session
页面上添加videoWall.aspx
,以验证他们是否来自该页面:
<强> videoWall.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
答案 1 :(得分:0)
1您可以使用PostBackUrl
方法
在目标页面中访问PreviousPage
并获取数据
链接:http://asp-net-example.blogspot.fr/2008/10/postbackurl-example-how-to-submit-page.html
2您还可以使用HttpModule
答案 2 :(得分:0)
如果我不允许在videoWallDetail页面的查询字符串中输入已知ID,则不应将其公开为查询字符串参数。如果我想为页面添加书签,或通过电子邮件向某人发送URL以便他们直接访问该怎么办?这些是不被允许的吗?
如果是这样,那么你需要删除该查询字符串参数。 URL栏应该是一个完全合法的方式供用户使用。如果他们可以输入一个URL来访问他们不应该没有400或500错误的页面,那么作为开发人员就是你的错误。
切换到使用会话变量或表单帖子来确认他们来自正确的位置,如果他们真的不应该在页面B上,而不是来自页面A.