指引网

当前位置: 主页 > 编程开发 > .NET >

ASP.NET中用户不可重复登录

来源:网络 作者:佚名 点击: 时间:2017-11-17 03:50
[摘要] 功能描述:A用户使用AID登录,B用户在A用户未退出的情况下也使用AID登录 这时A用户被取消权限 在Global.asax中添加以下代码: void Application_AcquireRequestState(object sender, EventArgs e) { if (Request["M

  功能描述:A用户使用AID登录 ,B用户在A用户未退出的情况下也使用AID登录  这时A用户被取消权限

  在Global.asax中添加以下代码:

        void Application_AcquireRequestState(object sender, EventArgs e)
            {
                if (Request["MyCookies"] != null && Session["ID"] != null)
                {
                    HttpCookie cookie = Request.Cookies["MyCookies"];
                    if (cookie[Session["ID"].ToString()] != null)
                    {
                        if (Application[Session["ID"].ToString()].ToString() != cookie[Session["ID"].ToString()].ToString())
                        {
                                TimeSpan ts = new TimeSpan(-1, 0, 0, 0);
                                cookie.Expires = DateTime.Now.Add(ts);
                                Response.AppendCookie(cookie);
                                Session["ID"] = null;
                                Request.Cookies.Remove("MyCookies");
                        }
                    }
                }
            }
 
        在需要权限验证的页面(等入窗口)

         protected void Button1_Click(object sender, EventArgs e)
        {
        if (Request.Cookies["MyCookies"] != null)
                {
                    if (Session["ID"] != null)
                    {
                        if (Session["ID"].ToString() != this.TextBox1.Text)
                        {
                            Res_Cookie();
                        }
                        else
                        {
                            Response.Write("登录成功!");
                        }
                    }
                }
                else
                {
                    Res_Cookie();
        }
        }

        private void Res_Cookie()
            {
                string this_time = DateTime.Now.ToString();
                Application[this.TextBox1.Text] = this_time;
                HttpCookie cookie = new HttpCookie("MyCookies");
                TimeSpan ts = new TimeSpan(0, 0, 1, 0);
                cookie.Values.Add(this.TextBox1.Text, this_time);
                Session["ID"] = this.TextBox1.Text;
                Response.AppendCookie(cookie);
                Response.Write("登录成功!");
            }

        在添加个测试按钮:
        protected void Button2_Click(object sender, EventArgs e)
            {
        if (Request.Cookies["MyCookies"] == null)
                {
                    Response.Write("登录失败!");
                }
                else
                {
                    Response.Write("登录成功!");
                }
            }
 
 
最后在session_end事件中对Application中的数据进行释放
------分隔线----------------------------