防止同一用户同时登陆

protected void btn_OK_Click(object sender, EventArgs e)
        {//登录
            String code = CodeTest.Code;
            if (!this.code.Text.Trim().Equals(code))
            {
                Response.Write("<script>alert('验证码错误!');</script>");
                return;
            }
            UserEntity user = UserBiz.LoginUser(name.Text, MD5Biz.Get_MD5_Method3(pwd.Text));
            if (user == null)
            {
                Response.Write("<script>alert('用户名或密码错误!')</script>");
                return;
            }
            else
            {
                string ip = GetClientIPBiz.GetClientIP();
                string cookieName = Request.Cookies["Username"] == null ? "" : Request.Cookies["Username"].Value;
                if (UserBiz.UserIsLogin(name.Text) == 1 && (DateTime.Now - user.UserLastTime).TotalMinutes < 30 && user.UserLastIP == ip && cookieName == name.Text)
                {//第二次在同一机子上30分钟内登陆,并且用Cookie防止在同一IP二个账号登陆

                }
                else if (UserBiz.UserIsLogin(name.Text) == 1 && user.UserLastIP != ip && (DateTime.Now - user.UserLastTime).TotalMinutes < 30)
                {
                    Response.Write("<script>alert('该用户已在IP为:" + user.UserLastIP + "的机子上已登录!')</script>");
                    return;
                }
                else
                {//第一次登陆
                    Response.Cookies["Username"].Value = name.Text;//设置Cookie
                }
                int scorse = 0;
                if ((DateTime.Now -user.UserLastTime).Days > 0)
                {//当日登陆第一次加积分
                    scorse = IntegralBiz.AddIntegralCount(13);
                }
                else
                {
                    scorse = 0;
                }
                BindState(user, ip, scorse);
                Response.Cookies["Username"].Expires = DateTime.Now.AddMinutes(30);
            }
        }


        private void BindState(UserEntity user, string IP, int scorse)
        {
            UserBiz.UpdateUserIsLoginState(1, name.Text);
            Session["User"] = user;
            //最后登录时间与IP
            UserBiz.UpdateUserInfoTimeandIP(user.UserID, DateTime.Now, IP, scorse);
            zhongxin.Visible = true;
            login.Visible = false;
        }

转载于:https://www.cnblogs.com/lidaohang/archive/2010/08/05/1793070.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值