Request.UrlReferrer获取来源url地址,不过根据你的描述你似乎得做一个表来存贮这些来源页与本页之间的关系。 如你的访问顺序为a-b-c-d-e 那么你需要这样存储: a b b c c d d e 好像很复杂,因为a页面有可能可以连接到c页面,那么还要有个a c的关系。 仅仅根据你的描述进行的分析
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls;/// <summary> /// myhandler 的摘要说明 /// </summary> public class myhandler:IHttpHandler { public myhandler() { // // TODO: 在此处添加构造函数逻辑 // } public void ProcessRequest(HttpContext context) { string localhost = System.Configuration.ConfigurationSettings.AppSettings["localhost"].ToString(); if (context.Request.UrlReferrer.Host==null || context.Request.UrlReferrer.Host.ToString() != localhost) { context.Response.Write("<script>alert('" + localhost + "')</script>"); } else { //跳转到该访问的页面 要怎么写? context.Response.Redirect(context.Request.Url.ToString()); } } public bool IsReusable { get { return true; } }}
你可以先建立一个页面: public partial class Base : System.Web.UI.Page { protected virtual void Page_Load(object sender, EventArgs e) { if (Page.PreviousPage == null) { Response.Redirect("login.aspx"); } } }然后所有的页面继承自它,比如: public partial class _Default : Base { protected new void Page_Load(object sender, EventArgs e) { } }我试了一下,应该可以的!
如你的访问顺序为a-b-c-d-e
那么你需要这样存储:
a b
b c
c d
d e
好像很复杂,因为a页面有可能可以连接到c页面,那么还要有个a c的关系。
仅仅根据你的描述进行的分析
session["UserName"]在登录页面赋值
或者写个httpmodlue
对每个页面进行判断,所有的页面继承基类BasePage
2.将判断放到一个统一的页基类BaesPage中的Page_Load中
3.用HttpModule或HtppHandler
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;/// <summary>
/// myhandler 的摘要说明
/// </summary>
public class myhandler:IHttpHandler
{
public myhandler()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void ProcessRequest(HttpContext context)
{
string localhost = System.Configuration.ConfigurationSettings.AppSettings["localhost"].ToString();
if (context.Request.UrlReferrer.Host==null || context.Request.UrlReferrer.Host.ToString() != localhost)
{
context.Response.Write("<script>alert('" + localhost + "')</script>");
}
else
{
//跳转到该访问的页面 要怎么写?
context.Response.Redirect(context.Request.Url.ToString());
}
}
public bool IsReusable
{
get { return true; }
}}
public partial class Base : System.Web.UI.Page
{
protected virtual void Page_Load(object sender, EventArgs e)
{
if (Page.PreviousPage == null)
{
Response.Redirect("login.aspx");
}
}
}然后所有的页面继承自它,比如:
public partial class _Default : Base
{
protected new void Page_Load(object sender, EventArgs e)
{
}
}我试了一下,应该可以的!