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

 

posted @ 2012-09-18 14:54  旭♥燕  阅读(367)  评论(0编辑  收藏  举报