建立一个basepage.cs 比如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; public class BasePage : System.Web.UI.Page { public BasePage() { } protected override void OnInit(EventArgs e) { if (Session[&"CurrentUser&"] == null) { HttpContext.Current.Response.Write(&"<script language=javascript>top.window.location.replace('index.aspx');</script>&"); HttpContext.Current.Response.End(); return; } else { //... }
比如:用户直接访问 page1.htm ,系统重定向到login.htm
重定向地址为:"/login.htm?returnurl=page1.htm"
这样在login页面就可以得到用户由那个页面跳转过来,当登陆成功后,获取retururl并再次跳转就行了
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;
public class BasePage : System.Web.UI.Page
{
public BasePage()
{ }
protected override void OnInit(EventArgs e)
{
if (Session[&"CurrentUser&"] == null)
{
HttpContext.Current.Response.Write(&"<script language=javascript>top.window.location.replace('index.aspx');</script>&");
HttpContext.Current.Response.End();
return;
}
else
{
//...
}
//---
base.OnInit(e);
}
}所有 需要 判断 用户登录信息的页面都 继承至basepage
public class popedom_usermgr : BasePage
{
//...
}
登录 页面 使用
Session[&"CurrentUser&"] 来保存用户信息
if(Session["user"]==null){//如果用户未登陆,将重定向登陆页面
Response.Redirect("login.aspx?rurl=page1.aspx");
}
login.aspx 下,登陆完成后,添加如下代码
if(登陆成功)
{
Session["user"] = user;
if(Request["rurl"]!=null){
string url = Request["rurl"];
Response.Redirect(url);
}
else
Response.Redirect("默认页");
}ps: asp.net中的form验证可以省写代码。
在每个页面里把rurl后的值改一下
if(Session["user"]==null){//如果用户未登陆,将重定向登陆页面
Response.Redirect("login.aspx?rurl=当前页.aspx");
}
工作量稍大,
如果你用了母版页的话就好一点了,你只要在母版页的page_load下添加if(Session["user"]==null){//如果用户未登陆,将重定向登陆页面
string url = Request.RawUrl;
Response.Redirect("login.aspx?rurl=" + url);
}登陆页面不变
Request.URL 可以获取完整的请求路径,包括主机名、端口等等
Server对象 可以获取服务器相关信息
具体参考msdn