【问题标题】:How to redirect back if user did not get to page properly in C#?如果用户在 C# 中没有正确访问页面,如何重定向回来?
【发布时间】:2012-09-25 14:20:22
【问题描述】:

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

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

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

提前致谢!

【问题讨论】:

  • 有一些解决方案,但我知道的大多数不是 100%。您想对坚定的用户发动多少战争?
  • 为什么要重定向? 404 似乎是对无效 video_id 的更好响应。
  • 我不想要一场大战,但有时视频会改变或变得不活跃。

标签: c# .net redirect


【解决方案1】:

您可以在videoWall.aspx 页面上添加Session 以验证他们来自该页面:

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

【讨论】:

    【解决方案2】:

    1 可以使用PostBackUrl方法

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

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

    2 你也可以用HttpModule重写你的url

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2014-11-27
        • 2016-12-21
        • 2018-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多