确保从特定链接访问页面

时间:2014-08-13 18:07:06

标签: c# asp.net validation

说我是否有link1.aspx和link2.aspx。在link1.aspx中,我将用户重定向到link2.aspx。

检查link2.aspx的最有效方法是什么才能通过link1.aspx访问?

例如:

link2.aspx:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        if page is not accessed via link1.aspx
        {
            Response.Redirect("~/portal.aspx");
        }
    }
}

我可以使用查询字符串,但还有其他方法吗?

2 个答案:

答案 0 :(得分:4)

您可以使用 UrlReferrer 。但是,它不是检测用户来自何处的安全方式。

例如,

if (string.Equals(Request.UrlReferrer.AbsoluteUri,
    "YOUR_REFERRER_URL",
    StringComparison.InvariantCultureIgnoreCase))
{

}

如果它在应用程序内的页面之间重定向,我建议使用 SessionState ,它比 UrlReferrer 更安全,更健壮。

link1.aspx.cs

private bool IsValidUrl
{
    set { Session["IsValidUrl"] = true; }
}

protected void Button1_Click(object sender, EventArgs e)
{
    IsValidUrl = true;
    Response.Redirect("link2.aspx");
}

link2.aspx.cs

private bool IsValidUrl
{
    get
    {
        if (Session["IsValidUrl"] != null)
            return Convert.ToBoolean(Session["IsValidUrl"]);
        return false;
    }
    set { Session["IsValidUrl"] = value; }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (IsValidUrl)
    {
        // user comes from valid url. 
        // .... Do somthing

        // Reset session state value
        IsValidUrl = false;
    }
}

答案 1 :(得分:3)

您可以使用Request.UrlReferrer属性来检查用户来自哪个页面。