说我是否有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");
}
}
}
我可以使用查询字符串,但还有其他方法吗?
答案 0 :(得分:4)
您可以使用 UrlReferrer 。但是,它不是检测用户来自何处的安全方式。
例如,
if (string.Equals(Request.UrlReferrer.AbsoluteUri,
"YOUR_REFERRER_URL",
StringComparison.InvariantCultureIgnoreCase))
{
}
如果它在应用程序内的页面之间重定向,我建议使用 SessionState ,它比 UrlReferrer 更安全,更健壮。
private bool IsValidUrl
{
set { Session["IsValidUrl"] = true; }
}
protected void Button1_Click(object sender, EventArgs e)
{
IsValidUrl = true;
Response.Redirect("link2.aspx");
}
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
属性来检查用户来自哪个页面。