这个问题是大多数程序员都容易碰到的问题,特别是在用户后台的页面验证上,如果我们知道了URL就可以直接绕过登录而进入的话,那我们的登录就白做了,我推荐一个最好的方法:
VS03下我是这么用的:

Code
using System;
using System.Web;
using System.Web.UI;
using System.Web.SessionState;
using System.Diagnostics;
namespace KingdeeWeb
{
/// <summary>
/// PageBase 的摘要说明。
/// </summary>
public class PageBase : System.Web.UI.Page
{
#region Web 窗体设计器生成的代码
protected override void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
base.OnInit(e);
this.Load+=new System.EventHandler(this.PageBase_Load);
}
private void PageBase_Load(object sender,System.EventArgs e)
{
this.PageBegin();
}
#endregion
public void PageBegin()
{
if( (UserInfo)Session["UserInfo"] ==null )
{
string Url = Request.ApplicationPath.ToString()+ "/Default.aspx" ;
Response.Write("<script>alert('在线超时或非法登陆,请重新登陆!');window.self.close();window.parent.location='"+ Url +"';</script>");
Response.End();
}
}
}
}
VS05下用上面的方法会报错,后来还了下面这个方法:

Code
public class BasePage : System.Web.UI.Page//注意这里
{
//重载页面方法
protected override void OnLoad(EventArgs e)
{
//如果没登录,转到登录,Session不为空,则正常加载页面.
if (Session["UserName"] == null)
{
Response.Redirect("~/Admin/Login.aspx");
}
else
{
base.OnLoad(e);
}
}
}
在要进行验证的页面引用就OK了。
public partial class Default : BasePage