当前位置:编程学习 > C#/ASP.NET >>

asp.net做的网站账号登陆后注销不管用了

最近做了个项目用到了数据库登录,A登陆后把登录状态保,个人信息存在Session里,但是奇怪的是,只要有一个用户登录后在其他电脑上打开上述页面,则也显示A登录状态,注销也不管用了。以前还号的。求大神啊。

以下是BasePage的代码,其他需要验证登录的页面继承该类
    public class BasePage : System.Web.UI.Page
    {
        //protected User_Info Uinfo = new User_Info();

        //登录的判断
        public static User_Info currUser = null;
        protected void Page_PreInit(object sender, System.EventArgs e)
        {
            if (currUser == null && Session["UserInfo"] != null)
            {
                currUser = (User_Info)Session["UserInfo"];
            }
            else
            {
                if (currUser == null)
                {
                    Response.Cookies.Add(new HttpCookie("_URL_REFERRER", Request.Url.ToString()));
                    System.Web.HttpContext.Current.Response.Redirect("../Admin/Login.aspx");
                    Response.End();
                }
                else
                    Session["UserInfo"] = currUser;
            }
        }
    }



一下是登录页面的登录方法的代码
       private void btnLogin_Click(object sender, System.Web.UI.ImageClickEventArgs e)
        {            
            string userName = Pwl.Common.PageValidate.InputText(txtUsername.Value.Trim(), 30);
            string Password = Pwl.Common.PageValidate.InputText(txtPass.Value.Trim(), 30);
            //Password = Pwl.DBUtility.DESEncrypt.Encrypt(Password);
            //Password = "1";
            Pwl.Model.User_Info userInfo = Pwl.DAL.User_Info.Instance.UserAuthorize(userName, Password);
            if (userInfo != null)
            {
                Session["UserInfo"] = userInfo;
                if (Pwl.DAL.User_Authority.Instance.IsAdmin((int)Pwl.Common.Pwl_Right.超级管理员, userName))
                {
                    Response.Redirect("Index.aspx");
                }
                if (Request.Cookies["_URL_REFERRER"] != null)
                {
                    String strUrlReferrer = Request.Cookies["_URL_REFERRER"].Value;
                    Response.Cookies["_URL_REFERRER"].Expires = DateTime.Now.AddDays(-2);
                    //清空记录路径Cookie
                    Response.Redirect(strUrlReferrer);
                }
                else
                {
                    Response.Redirect("../Portal/UserMessage.aspx");
                }
            }
            this.lblMsg.Text = "用户名或密码错误!";

        }

一下是
注销方法的代码
        //注销
        protected void lbtLoginOut_Click(object sender, EventArgs e)
        {
            Session.Remove("UserInfo"); 
            Pwl.Common.BasePage.currUser = null;
            Response.Redirect("../Default.aspx");
        }

等啊
asp.net --------------------编程问答-------------------- 这个你调试下就好了,你在注销方法中设置一个断点,当运行完注销方法之后查看下Session内容是否为空就好了 --------------------编程问答-------------------- 居然定义一个静态变量保存登录信息,当然就是这样子了。
public static User_Info currUser 
应该在登录成功后直接存到 SESSION 中,要用的时候从 SESSION 中取。 --------------------编程问答-------------------- 楼上正解。

BTW: 不建议使用Session来做这个事情, 建议去参考下 FormsAuthentication 和 Membership 的架构
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,