Session在页面间的运用和页面间控制往返跳转
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if(Session["CurrentUserID"]==null||(int)Session["CurrentUserID"]<=0)
{
Response.Redirect(@"~/UserManage/Login.aspx?ReturnUrl="+Request.Url.AbsolutePath);
}
this.lbtn_username.Text = new UserManage((int)Session["CurrentUserID"]).UserName;
}
}
protected void lbtn_logout_Click(object sender, EventArgs e) //注销系统按钮
{
Session["CurrentUserID"] = null; //注销系统时,让Session["CurrentUserID"]的值为null,即为注销当前用户
Response.Redirect(@"~/UserManage/Login.aspx?ReturnUrl="+Request.Url.AbsolutePath);
}
这段代码中需要理解的是:
Session存储数据是以键值对的形式存储的
Session["CurrentUserID"]这里的CurrentUserID是自己随便取名的
这个判断必不可少的,if(Session["CurrentUserID"]==null||(int)Session["CurrentUserID"]<=0),Session["CurrentUserID"]
Session["CurrentUserID"]==null判断的是:用户未登录
(int)Session["CurrentUserID"]<=0判断的是:用户登录不成功
Response.Redirect(@"~/UserManage/Login.aspx?ReturnUrl="+Request.Url.AbsolutePath);
这条语句的意思是: 响应转向到Login.aspx页面,并传递ReturnUrl参数
登录页面通过如下代码:
Session["CurrentUserID"] = UserID;
string SuccessUrl = "~/Home.aspx";
if (Request.QueryString["ReturnUrl"] != null && Request.QueryString["ReturnUrl"] != string.Empty)
{
SuccessUrl = Request.QueryString["ReturnUrl"];
}
Response.Redirect(SuccessUrl);
再返回到当前页。
实现了:当某个用户想直接跳入某个页面跨过登录页面,会先响应当前页的加载转向登录页,然后登录页通过RetrunUrl来返回当前页。
假设我们的网址为http://localhost:1897/ News/Press/Content.aspx?id=1019
那么Request.Url.AbsolutePath为News/Press /Content.aspx
对于Request.Url具体参考:http://blog.csdn.net/gaopei20100122/article/details/5528463