Example #1
0
        public void LoginRecord(UserInfoOutputDto userInfo, string ip, LoginType type)
        {
            LoginRecord record = new LoginRecord()
            {
                IpAddress = ip,
                LoginTime = DateTime.Now,
                LoginType = type,
            };
            UserInfo u = UserInfoService.GetByUserName(userInfo.UserName);

            u.LoginRecords.Add(record);
            UserInfoService.UpdateEntitySaved(u);
            //string content = System.IO.File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "App_Data\\template\\login.html").Replace("{{name}}", u.Username).Replace("{{time}}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")).Replace("{{ip}}", record.IpAddress).Replace("{{address}}", record.IpAddress.GetProvince());
            //CommonHelper.SendMail(CommonHelper.GetSettings("Title") + "账号登录通知", content, CommonHelper.GetSettings("ReceiveEmail"));
        }
        public void Auth(string deviceId)
        {
            MyLog.InfoWithFrame(name, string.Format("Get deviceId  {0}", deviceId));
            _authResult = null;
            LoginRecord.RemoveOpenId();
            LoginRecord.RemoveAuthCode();
            PrefsUtil.Flush();

#if UNITY_ANDROID
            _android.WxAuth(deviceId);
#endif
#if UNITY_IOS
            _ios.WxAuth(deviceId);
#endif
        }
Example #3
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");

            if (ModelState.IsValid)
            {
                // This doesn't count login failures towards account lockout
                // To enable password failures to trigger account lockout, set lockoutOnFailure: true
                var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure : false);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User logged in.");

                    //login record
                    using (_context)
                    {
                        var user   = _context.ExecSQL <AspNetUsers>("SELECT Id FROM AspNetUsers WHERE Email = '" + Input.Email + "'").First();
                        var record = new LoginRecord()
                        {
                            UserId    = user.Id,
                            LoginTime = DateTime.Now
                        };
                        _context.LoginRecord.Add(record);
                        _context.SaveChanges();
                    }

                    return(LocalRedirect(returnUrl));
                }
                if (result.RequiresTwoFactor)
                {
                    return(RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = Input.RememberMe }));
                }
                if (result.IsLockedOut)
                {
                    _logger.LogWarning("User account locked out.");
                    return(RedirectToPage("./Lockout"));
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                    return(Page());
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }
Example #4
0
        public void UpdateLoginDate(DateTime date, int userId)
        {
            Users userInfo = GetUser(userId);

            userInfo.LastLoginDate = date;

            LoginRecord record = new LoginRecord()
            {
                LoginDate = DateTime.Now,
                UserId    = userId
            };

            context.LoginRecord.Add(record);

            context.SaveChanges();
        }
        /// <summary>
        /// Validates the passed in LoginRecord against the passed in password. Will update
        /// the LoginRecord attempts if the password was incorrect.
        /// </summary>
        /// <param name="login">LoginRecord to get the associated LoginToken</param>
        /// <param name="password">Password associated with the LoginRecord</param>
        /// <returns>LoginToken or Null</returns>
        public LoginToken LoginTokenOrDefault(LoginRecord login, string password)
        {
            // there was no login so immediately return
            if (login == null) return null;

            // call down to the delegate which handles verifying the password and
            // generating the token from our API key.
            var token = _security.LoginTokenOrDefault(login, password);
            // reset the login attempts if had a valid password
            if (token != null) login.LoginAttempts = 0;

            // sync the login attempts
            _uow.Logins.Update(login);
            _uow.SaveChanges();
            return token;
        }
Example #6
0
        public void UpdateLoginOutDate(DateTime date, int userId)
        {
            LoginRecord record = (
                from a in context.LoginRecord
                where a.UserId == userId && a.LoginOutDate == null
                orderby a.LoginDate descending
                select a
                ).FirstOrDefault();

            if (record != null)
            {
                record.LoginOutDate = date;
                record.LoginTime    = Convert.ToInt32((date - Convert.ToDateTime(record.LoginDate)).TotalMinutes);
                context.SaveChanges();
            }
        }
        public void LoginRecord(UserInfoOutputDto userInfo, string ip, LoginType type)
        {
            Interview   view   = InterviewBll.GetFirstEntityFromL2CacheNoTracking(i => i.IP.Equals(ip), i => i.ViewTime, false);
            string      addr   = view.Address;
            string      prov   = view.Province;
            LoginRecord record = new LoginRecord()
            {
                IP = ip, LoginTime = DateTime.Now, LoginType = type, PhysicAddress = addr, Province = prov
            };
            UserInfo u = UserInfoBll.GetByUsername(userInfo.Username);

            u.LoginRecord.Add(record);
            UserInfoBll.UpdateEntitySaved(u);
            string content = System.IO.File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "template\\login.html").Replace("{{name}}", u.Username).Replace("{{time}}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")).Replace("{{ip}}", record.IP).Replace("{{address}}", record.PhysicAddress);

            CommonHelper.SendMail(CommonHelper.GetSettings("Title") + "账号登录通知", content, CommonHelper.GetSettings("ReceiveEmail"));
        }
        //Private

        #region # 构造登录信息 —— LoginInfo BuildLoginInfo(User user...
        /// <summary>
        /// 构造登录信息
        /// </summary>
        /// <param name="user">用户</param>
        /// <param name="clientId">客户端Id</param>
        /// <returns>登录信息</returns>
        private LoginInfo BuildLoginInfo(User user, string clientId)
        {
            //生成公钥
            Guid publicKey = Guid.NewGuid();

            //生成登录信息
            LoginInfo loginInfo = new LoginInfo(user.Number, user.Name, publicKey);

            loginInfo.ClientId = clientId;

            #region # 登录信息的信息系统部分/菜单部分/权限部分

            /*角色部分*/
            ICollection <Guid> roleIds = user.GetRelatedRoleIds();

            /*信息系统部分*/
            IEnumerable <string>             infoSystemNos = user.GetRelatedInfoSystemNos();
            IDictionary <string, InfoSystem> infoSystems   = this._repMediator.InfoSystemRep.Find(infoSystemNos);
            loginInfo.LoginSystemInfos = infoSystems.Values.Select(x => x.ToLoginSystemInfo()).ToList();

            /*权限部分*/
            IEnumerable <Authority> authorities = this._repMediator.AuthorityRep.FindByRoles(roleIds, null);
            loginInfo.LoginAuthorityInfos = authorities.Select(x => x.ToLoginAuthorityInfo()).ToList();

            /*菜单部分*/
            IEnumerable <Guid> authorityIds = authorities.Select(x => x.Id);
            IEnumerable <Menu> menus        = this._repMediator.MenuRep.FindByAuthorities(authorityIds, null);
            menus = menus.TailRecurseParentNodes();
            loginInfo.LoginMenuInfos = menus.ToLoginMenuInfoTree(null);

            #endregion

            //以公钥为键,登录信息为值,存入分布式缓存
            CacheMediator.Set(publicKey.ToString(), loginInfo, DateTime.Now.AddMinutes(GlobalSetting.AuthenticationTimeout));

            //获取客户端IP
            string ip = this.GetClientIp();

            //生成登录记录
            LoginRecord loginRecord = new LoginRecord(publicKey, user.Number, user.Name, ip, clientId);

            this._unitOfWork.RegisterAdd(loginRecord);
            this._unitOfWork.Commit();

            return(loginInfo);
        }
Example #9
0
        private ActionResult SetUser(User user)
        {
            Response.Cookies.Add(new System.Web.HttpCookie("token", user.UserId));
            //微信登录
            var wx_token = System.Web.HttpContext.Current.Request["wx_token"];

            if (wx_token != null)
            {
                AuthAccountServer.Instance.Update(wx_token, user.UserId);
            }
            var LoginRecord = new LoginRecord
            {
                UserId    = user.UserId,
                IP        = System.Web.HttpContext.Current.Request.UserHostAddress,
                LoginTime = DateTime.Now,
                Type      = (wx_token != null?"Wx":"App")
            };

            new UserService().AddLoginRecord(LoginRecord);
            Session["User"] = user;
            Session.Timeout = 60 * 1;
            //获取经纬度
            var userPosition = new UserService().GetUserPosition(user.UserId);

            return(Json(new
            {
                id = user.UserId,
                name = user.NickName,
                type = (int)user.RoleKey,
                phone = user.Phone,
                sex = user.Sex,
                //使用单位信息是否激活(审核通过)
                status = user.UseCompany != null ? "" + user.UseCompany.State + "" : "NotActive",
                //服务单位信息是否激活(审核通过)
                serviceStatus = user.ServiceCompany != null ? "" + user.ServiceCompany.State + "" : "NotActive",
                useCompany = user.UseCompany?.Name,
                useCompanyId = user.UseCompany?.UseCompanyId,
                serviceCompany = user.ServiceCompany?.Name,
                serviceCompanyId = user.ServiceCompany?.ServiceCompanyId,
                longitude = userPosition?.Longitude,
                latitude = userPosition?.Latitude,
                workingway = user.ServiceCompany?.WorkingWay,
                workedway = user.ServiceCompany?.WorkedDWay
            }, JsonRequestBehavior.AllowGet));
        }
Example #10
0
        protected void LoginBtn_Click(object sender, EventArgs e)
        {
            var         dataAccess = new DataAccess();
            string      userName   = txtUserName.Text;
            string      password   = txtPassword.Text;
            LoginRecord record     = dataAccess.GetRecord(userName, password);

            if (record != null && record.EmailAdd == userName && record.Password == password)
            {
                Session["Username"]   = record.EmailAdd;
                Session["Password"]   = record.Password;
                Session["IsLoggedIn"] = true;
                Response.Redirect("Default.aspx");
            }
            else
            {
                lblIncorrectLogin.Visible = true;
            }
        }
Example #11
0
 protected override void OnCreate(Bundle savedInstanceState)
 {
     base.OnCreate(savedInstanceState);
     _viewModel = new LoginViewModel();
     _login     = FindViewById <TextInputEditText>(Resource.Id.input_login);
     _password  = FindViewById <TextInputEditText>(Resource.Id.input_password);
     FindViewById(Resource.Id.login_btn).Click += delegate
     {
         var record = new LoginRecord
         {
             Login    = _login.Text,
             Password = _password.Text
         };
         _viewModel.LoginCommand.Execute(record);
     };
     FindViewById(Resource.Id.link_signup).Click += delegate
     {
         Toast.MakeText(this, "здесь могла быть ваша реклама", ToastLength.Long).Show();
     };
 }
Example #12
0
        private bool LoginWechat(IAppContext context, float time)
        {
            MyLog.DebugWithFrame(Tag, "Start wechat login gate server.");

            _isServerVerifyWechatSucc = false;
            _wechatAuthResultContainer.ClearNotInvalidate();
            _wechatLoginResultContainer.ClearNotInvalidate();

            var openId = LoginRecord.GetOpenId();

            if (!string.IsNullOrEmpty(openId))
            {
                DoWechatLogin(context, openId);
            }
            else
            {
                GetAuthCode(context);
            }
            return(true);
        }
        /// <summary>
        /// 登录记录
        /// </summary>
        /// <param name="userInfo"></param>
        /// <param name="ip"></param>
        /// <param name="type"></param>
        public void LoginRecord(UserInfoDto userInfo, string ip, LoginType type)
        {
            var record = new LoginRecord()
            {
                IP            = ip,
                LoginTime     = DateTime.Now,
                LoginType     = type,
                PhysicAddress = ip.GetIPLocation()
            };
            var u = _userInfoService.GetByUsername(userInfo.Username);

            u.LoginRecord.Add(record);
            _userInfoService.SaveChanges();
            var content = new Template(File.ReadAllText(Path.Combine(_hostEnvironment.WebRootPath, "template", "login.html")))
                          .Set("name", u.Username)
                          .Set("time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))
                          .Set("ip", record.IP)
                          .Set("address", record.PhysicAddress).Render();

            CommonHelper.SendMail(_settingService.Get(s => s.Name.Equals("Title")).Value + "账号登录通知", content, _settingService.Get(s => s.Name.Equals("ReceiveEmail")).Value, "127.0.0.1");
        }
        public void LoginRecord(UserInfoOutputDto userInfo, string ip, LoginType type)
        {
            var         view   = RedisHelper.ListRange <Interview>($"Interview:{DateTime.Today:yyyy:MM:dd}").OrderByDescending(i => i.ViewTime).FirstOrDefault(i => i.IP.Equals(ip));
            string      addr   = view?.Address;
            string      prov   = view?.Province;
            LoginRecord record = new LoginRecord()
            {
                IP            = ip,
                LoginTime     = DateTime.Now,
                LoginType     = type,
                PhysicAddress = addr,
                Province      = prov
            };
            UserInfo u = UserInfoBll.GetByUsername(userInfo.Username);

            u.LoginRecord.Add(record);
            UserInfoBll.UpdateEntitySaved(u);
            string content = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "template\\login.html").Replace("{{name}}", u.Username).Replace("{{time}}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")).Replace("{{ip}}", record.IP).Replace("{{address}}", record.PhysicAddress);

            CommonHelper.SendMail(CommonHelper.GetSettings("Title") + "账号登录通知", content, CommonHelper.GetSettings("ReceiveEmail"));
        }
Example #15
0
        protected override async void Run(Session session, C2G_QueryUserLoginRecord message, Action <G2C_QueryUserLoginRecord> reply)
        {
            G2C_QueryUserLoginRecord response        = new G2C_QueryUserLoginRecord();
            UserLoginRecord          UserLoginRecord = null;

            response.IsOk = false;
            try
            {
                DBProxyComponent dBProxyComponent = Game.Scene.GetComponent <DBProxyComponent>();

                var acounts = await dBProxyComponent.Query <UserLoginRecord>("{ '_AccountID': " + message.AccountID + "}");

                if (acounts.Count > 0)
                {
                    for (int i = 0; i < acounts.Count; i++)
                    {
                        UserLoginRecord = acounts[i] as UserLoginRecord;

                        LoginRecord record = new LoginRecord();
                        record.AccountID         = UserLoginRecord._AccountID;
                        record.InfoID            = UserLoginRecord._InfoID;
                        record.LoginTimes        = UserLoginRecord._LoginTimes;
                        record.IP                = UserLoginRecord._IP;
                        record.LoginLocInfo      = UserLoginRecord._LoginLocInfo;
                        record.AbnormalStateCode = UserLoginRecord._AbnormalStateCode;
                        record.LoginDate         = UserLoginRecord._LoginDate;
                        response.Userlist.Add(record);
                    }
                }

                reply(response);
            }
            catch (Exception e)
            {
                response.Message = "数据库异常";
                ReplyError(response, e, reply);
            }
        }
Example #16
0
        /// <summary>
        /// 注册成功
        /// </summary>
        private void RegisterOk()
        {
            _registerFinished = true;

            _dialogManager.ShowWaitingDialog(false);

            _dialogManager.HideDialog(DialogName.RegisterDialog);
            _dialogManager.ShowConfirmBox(
                "恭喜您注册成功!",
                true, "马上登陆", () =>
            {
                LoginRecord.LastUsername  = _registerUsername;
                LoginRecord.LastPassword  = _registerPassword;
                LoginRecord.LastLoginType = LoginRecord.NormalUser;
                LoginRecord.SaveAll();

                _appController.ClearAppStateData();
                _network.InitLogin();
            },
                false, null, null,
                true, false, true);
            _remoteAPI.RequestUserInfo();
        }
Example #17
0
        /// <summary>
        /// 登录记录
        /// </summary>
        /// <param name="userInfo"></param>
        /// <param name="ip"></param>
        /// <param name="type"></param>
        public void LoginRecord(UserInfoOutputDto userInfo, string ip, LoginType type)
        {
            var result = ip.GetPhysicsAddressInfo().Result;

            if (result?.Status == 0)
            {
                string      addr   = result.AddressResult.FormattedAddress;
                string      prov   = result.AddressResult.AddressComponent.Province;
                LoginRecord record = new LoginRecord()
                {
                    IP            = ip,
                    LoginTime     = DateTime.Now,
                    LoginType     = type,
                    PhysicAddress = addr,
                    Province      = prov
                };
                UserInfo u = _userInfoService.GetByUsername(userInfo.Username);
                u.LoginRecord.Add(record);
                _userInfoService.UpdateEntitySaved(u);
                string content = File.ReadAllText(Path.Combine(_hostingEnvironment.WebRootPath, "template", "login.html")).Replace("{{name}}", u.Username).Replace("{{time}}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")).Replace("{{ip}}", record.IP).Replace("{{address}}", record.PhysicAddress);
                CommonHelper.SendMail(_settingService.GetFirstEntity(s => s.Name.Equals("Title")).Value + "账号登录通知", content, _settingService.GetFirstEntity(s => s.Name.Equals("ReceiveEmail")).Value);
            }
        }
Example #18
0
        private bool LoginVisitor(IAppContext context, float time)
        {
            MyLog.DebugWithFrame(Tag, "Start visitor login gate server.");

            var remoteAPI = context.GetRemoteAPI();
            // 读取之前有没有用游客登陆过。
            var visitor         = LoginRecord.LastVisitorId;
            var visitorUsername = LoginRecord.LastVisitorUsername;

            if (string.IsNullOrEmpty(visitor))
            {
                // 没有的visitorId的情况下,则使用设备的deviceUniqueIdentifier作为游客用户名。
                visitor = GetDeviceId(context);
                LoginRecord.LastVisitorId = visitor;
            }
            else
            {
                MyLog.InfoWithFrame(Tag, string.Format("old visitor: {0}", visitor));
            }

            if (string.IsNullOrEmpty(visitorUsername))
            {
                visitorUsername = GetVisitorUsername(context);
                LoginRecord.LastVisitorUsername = visitorUsername;
            }
            MyLog.InfoWithFrame(Tag, string.Format("use visitorUsername: {0}", visitorUsername));

            LoginRecord.SaveAll();

            // 上一次是游客登录。
            // 如果是游客登陆的话,就不要记录用户名了。

            remoteAPI.PVisitorLogin("", visitor, visitorUsername);
            MyLog.InfoWithFrame(Tag, string.Format("visitor login: {0} : {1}", visitor, visitorUsername));
            return(true);
        }
Example #19
0
        private void RefreshWechatAuthResult(IAppContext context)
        {
            var dialogManager = _context.GetDialogManager();

            if (_wechatAuthResultRefreshTime >= _wechatAuthResultContainer.Timestamp)
            {
                return;
            }

            _wechatAuthResultRefreshTime = _wechatAuthResultContainer.Timestamp;

            var res = _wechatAuthResultContainer.Read();

            if (res.res.code != ResultCode.OK)
            {
                MyLog.ErrorWithFrame(Tag, "WechatAuthResult res.res.code =" + res.res.code);
                var msg = res.res.msg;
                if (!string.IsNullOrEmpty(msg))
                {
                    dialogManager.ShowToast(msg, 2, true);
                }
                else
                {
                    dialogManager.ShowToast("登陆失败,请重新登录!", 2, true);
                }
                ChangeAccount();
            }
            else
            {
                var openId = res.open_id;
                LoginRecord.SaveOpenId(openId);

                MyLog.InfoWithFrame(Tag, "WechatAuthResult SaveOpenId openId = " + openId);
                DoWechatLogin(context, openId);
            }
        }
 public static void SaveLoginRecord(LoginRecord loginRecord)
 {
     loginRecordRepository.Save(loginRecord);
 }
        public ActionResult Part_StatisticsLoginSearch()
        {
            int page = 1;
            long pageCount = 0;
            List<LoginRecord> Lr = new List<LoginRecord>();
            if (!string.IsNullOrWhiteSpace(Request.QueryString["page"]))
            {
                page = int.Parse(Request.QueryString["page"]);
            }
            var loginuser = Request.Params["loginuser"];
            var loginresult = Request.Params["loginresult"];
            var time = Request.Params["time"];
            var nettype = Request.Params["nettype"];
            var q = Query.Null;

            if (!string.IsNullOrWhiteSpace(nettype))
            {
                if (nettype == "内网")
                {
                    q = q.And(Query<登录统计>.Where(o => o.内网访问));
                }
                else
                {
                    q = q.And(Query<登录统计>.Where(o => !o.内网访问));
                }
            }

            if (!string.IsNullOrWhiteSpace(loginresult))
            {
                if (loginresult == "登录成功")
                {
                    q = q.And(Query<登录统计>.Where(o => o.登录结果 == 登录结果.登录成功));
                }
                else
                {
                    q = q.And(Query<登录统计>.Where(o => o.登录结果 != 登录结果.登录成功));
                }
            }

            if (!string.IsNullOrWhiteSpace(loginuser))
            {
                if (loginuser == "供应商")
                {
                    q = q.And(Query<登录统计>.Where(o => o.用户数据.用户ID >= 200000000000 && o.用户数据.用户ID < 300000000000));
                }
                else if (loginuser == "单位用户")
                {
                    q = q.And(Query<登录统计>.Where(o => o.用户数据.用户ID >= 0 && o.用户数据.用户ID < 100000000000));
                }
                else if (loginuser == "专家")
                {
                    q = q.And(Query<登录统计>.Where(o => o.用户数据.用户ID >= 300000000000 && o.用户数据.用户ID < 400000000000));
                }
                else if (loginuser == "运营团队")
                {
                    q = q.And(Query<登录统计>.Where(o => o.用户数据.用户ID >= 100000000000 && o.用户数据.用户ID < 200000000000));
                }
            }

            if (!string.IsNullOrWhiteSpace(time))
            {
                var date = DateTime.Now;
                if (time == "1")
                {
                    var now = new DateTime(date.Year, date.Month, date.Day);
                    q = q.And(Query<登录统计>.Where(o => o.登录时间 >= now));
                }
                else
                {
                    q = q.And(Query<登录统计>.Where(o => o.登录时间 > date.AddDays(0 - int.Parse(time))));
                }
            }
            IEnumerable<登录统计> loginlist = 登录统计管理.查询登录统计(20 * (page - 1), 20, q);
            foreach (var item in loginlist)
            {
                LoginRecord r = new LoginRecord();
                if (item.内网访问)
                {
                    r.InOrEx = "内网";
                }
                else
                {
                    r.InOrEx = "外网";
                }
                r.IpAddr = item.登录IP;
                r.LoginTime = item.登录时间.ToString("yyyy/MM/dd hh:mm:ss");
                r.Result = item.登录结果.ToString();
                r.UserId = item.用户数据.用户ID;
                Lr.Add(r);
            }
            long pc = 登录统计管理.计数登录统计(0, 0, q);
            pageCount = pc / 20;
            if (pc % 20 > 0)
            {
                pageCount++;
            }
            JsonResult json = new JsonResult() { Data = new { loginuser = Lr, pCount = pageCount, sum = pc } };
            return Json(json, JsonRequestBehavior.AllowGet);
        }
Example #22
0
 public static void SaveLoginRecord(LoginRecord loginRecord)
 {
     loginRecordRepository.Save(loginRecord);
 }
Example #23
0
        protected void Button1_Click(object sender, EventArgs e)
        {
            if ("".Equals(tbUserName.Value.Trim()))
            {
                this.ClientScript.RegisterStartupScript(this.GetType(), "noUser", "alert('用户名不能为空!');", true);
                return;
            }

            #region 查看当前用户是否已经被锁定(根据系统设定的最大密码错误次数和启用该功能的开关)
            string PassWordErrorRecord = StringEncodeAndDecode.Decode(ConfigurationManager.AppSettings["PassWordErrorRecord"].ToString()).ToUpper();
            if (PassWordErrorRecord.Equals("QIYONG") && !CheckErrorRecord())
            {
                this.ClientScript.RegisterStartupScript(this.GetType(), "noUser", "alert('您今天的密码错误次数已经达到上限,系统拒绝您今天登陆!');", true);
                return;
            }
            #endregion

            FormsAuthentication.Initialize();
            UserBll           userBll = new UserBll();
            thesis.model.User spcUser = userBll.GetModel(tbUserName.Value.Trim().ToLower());
            if (spcUser != null && spcUser.MM.Equals(StringEncodeAndDecode.Encode(tbPassword.Value.Trim())))
            {
                //写入日志
                OperationLogBll olBll = new OperationLogBll();
                OperationLog    oLog  = new OperationLog();
                oLog.SPECIES12_ID = spcUser.ID;
                string ipaddress = ClientIPAddress.getIPAddress();
                oLog.RQSJ = DateTime.Now;
                oLog.NR   = spcUser.NAME + "成功登录本系统【" + ipaddress + "】!";
                oLog.ENR  = spcUser.NAME + "load successfully[" + ipaddress + "]!";
                olBll.Add(oLog);

                //修改用户的登录信息,添加用户登陆日志

                /*修改用户的最新登陆日期和访问量*/
                string logindate = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                spcUser.HOLD1 = logindate;
                spcUser.HOLD2 = spcUser.HOLD2.Trim().Equals("") ? "1" : (int.Parse(spcUser.HOLD2) + 1).ToString();

                userBll.Update(spcUser);

                /*写入登陆日志*/

                LoginRecordBLL loginbll = new LoginRecordBLL();
                LoginRecord    record   = new LoginRecord();
                record.USERID    = spcUser.ID;
                record.IPADDRESS = ipaddress;
                record.LOGINDATE = logindate;
                record.BY2       = "";
                record.BY1       = "";

                loginbll.Add(record);


                // 为了实现认证,创建一个新的票据
                FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
                    1,                                    // 票据版本号
                    tbUserName.Value.Trim(),              // 票据持有者
                    DateTime.Now,                         //分配票据的时间
                    DateTime.Now.AddMinutes(30),          // 失效时间
                    true,                                 // 需要用户的 cookie
                    "spcuser",                            // 用户数据,可以作为用户的角色
                    FormsAuthentication.FormsCookiePath); //cookie有效路径
                //使用机器码machine key加密cookie,为了安全传送
                string     hash   = FormsAuthentication.Encrypt(ticket);
                HttpCookie cookie = new HttpCookie(
                    FormsAuthentication.FormsCookieName, // 认证cookie的名称
                    hash);                               //加密之后的cookie

                //将cookie的失效时间设置为和票据tikets的失效时间一致
                if (ticket.IsPersistent)
                {
                    cookie.Expires = ticket.Expiration;
                }

                //添加cookie到页面请求响应中
                Response.Cookies.Add(cookie);

                // 将用户转向到之前请求的页面,
                // 如果之前没有请求任何页面,就转向到首页
                string returnUrl = Request.QueryString["ReturnUrl"];
                if (returnUrl == null)
                {
                    returnUrl = "Default.aspx";
                }

                // 不要调用 FormsAuthentication.RedirectFromLoginPage 方法,
                // 因为它会把刚才添加的票据(cookie)替换掉
                #region 清除密码错误记录
                if (PassWordErrorRecord.Equals("QIYONG"))
                {
                    string del = "delete from ERRORPASSWORDRECORD where username='******' and ERRORDATE='" + System.DateTime.Now.ToString("yyyy-MM-dd") + "'";
                    DbHelperSQL.ExecuteSql(del);
                }
                #endregion

                #region 清除超时用户,同时清除自己以前的登录记录(目的是防止因为Session过期而导致的重新登陆拒绝问题)
                string LimitOnline = StringEncodeAndDecode.Decode(ConfigurationManager.AppSettings["LimitOnline"]);
                if (!LimitOnline.ToUpper().Equals("XJTUCIMSSPC"))
                {
                    if (DelTimeOut(this.tbUserName.Value.ToString()))
                    {
                        WriteActiveUser(this.tbUserName.Value.ToString());
                        Session["userwrx"] = spcUser;

                        Session["UserName2"] = tbUserName.Value.ToString();
                        Session["UserID"]    = spcUser.ID;
                        Response.Redirect(returnUrl);
                    }
                    else
                    {
                        this.ClientScript.RegisterStartupScript(this.GetType(), "noUser", "alert('当前用户已经登录,不能重复登录!');", true);
                    }
                }
                else
                {
                    Session["userwrx"] = spcUser;

                    Session["UserName2"] = tbUserName.Value.ToString();
                    Session["UserID"]    = spcUser.ID;
                    Response.Redirect(returnUrl);
                }

                #endregion
            }
            else
            {
                if (PassWordErrorRecord.Equals("QIYONG"))
                {
                    string  sql_sel      = "select * from ERRORPASSWORDRECORD where username='******' and ERRORDATE='" + System.DateTime.Now.ToString("yyyy-MM-dd") + "'";
                    DataSet ds           = DbHelperSQL.Query(sql_sel);
                    int     max_error    = 5;
                    int     remain_error = 4;

                    if (!StringEncodeAndDecode.Decode(ConfigurationManager.AppSettings["ErrorRecordNum"].ToString()).Equals(""))
                    {
                        max_error = int.Parse(StringEncodeAndDecode.Decode(ConfigurationManager.AppSettings["ErrorRecordNum"].ToString()));
                    }
                    if (ds.Tables[0].Rows.Count == 0)//还没有错误过
                    {
                        string sql_ins = "insert into ERRORPASSWORDRECORD(username,IPADDRESS,ERRORNUM,ERRORDATE)values('" + this.tbUserName.Value + "','" + ClientIPAddress.getIPAddress() + "',1,'" + System.DateTime.Now.ToString("yyyy-MM-dd") + "')";
                        DbHelperSQL.ExecuteSql(sql_ins);
                    }
                    else
                    {
                        string sql_update = "update ERRORPASSWORDRECORD set ERRORNUM=ERRORNUM+1 where username='******' and ERRORDATE='" + System.DateTime.Now.ToString("yyyy-MM-dd") + "'";
                        DbHelperSQL.ExecuteSql(sql_update);
                        remain_error = max_error - int.Parse(ds.Tables[0].Rows[0]["ERRORNUM"].ToString()) - 1;
                    }
                    this.ClientScript.RegisterStartupScript(this.GetType(), "noUser", "alert('错误的用户名/密码,您还有【" + remain_error + "】次尝试机会!');", true);
                }
                else
                {
                    this.ClientScript.RegisterStartupScript(this.GetType(), "noUser", "alert('错误的用户名/密码!');", true);
                }
            }
        }
Example #24
0
        public override bool Process(IAppContext context, float time)
        {
            var dialogManager = _context.GetDialogManager();

            if (LoginRecord.CurrentLoginType == LoginRecord.Wechat && !_isServerVerifyWechatSucc)
            {
                RefreshWechatAuthResult(context);
                RefreshWechatLoginResult(context);
                return(false);
            }

            if (!_loginStarted)
            {
                return(true);
            }

            var dataRepository = _context.GetDataRepository();
            var container      = dataRepository.GetContainer <PLoginResult>(DataKey.PLoginResult);
            var res            = container.Read();

            if ((res == null) && ((time - _startLoginTime) > LoginResultTimeOut))
            {
                _isTimeout = true;
                return(true);
            }

            if (res == null)
            {
                return(false);
            }

            if (res.result != ResultCode.OK)
            {
                // 登陆出错了,弹出对话框提示玩家。
                switch (res.result)
                {
                case ResultCode.P_LOGIN_INVALID_CLIENT_VERSION:
                    dialogManager.ShowToast("客户端版本无效,请下载最新的客户端使用!", 4, true);
                    break;

                case ResultCode.P_LOGIN_USER_NOT_FOUND:
                    dialogManager.ShowToast("用户不存在!", 2, true);
                    break;

                case ResultCode.P_LOGIN_PASSWORD_WRONG:
                    dialogManager.ShowToast("密码错误!", 2, true);
                    break;

                case ResultCode.P_LOGIN_NO_HALL_SERVER:
                    dialogManager.ShowToast("没有找到服务器,请稍后重新登陆!", 4, true);
                    break;

                case ResultCode.P_USER_WRONG_DEVICE:
                    dialogManager.ShowToast("登陆设备错误,请重新使用游客登陆!", 4, true);
                    // 清空当前记录的visitorUsername。
                    ClearVisitorUsername(context);
                    // 下一次自动使用游客登陆。
                    LoginRecord.LastLoginType = LoginRecord.Visitor;
                    LoginRecord.SaveAll();
                    break;
                }
                ChangeAccount();
                return(false);
            }

            LoginRecord.LastLoginType = LoginRecord.CurrentLoginType;
            return(true);
        }
Example #25
0
        /// <summary>
        /// 用户登录
        /// </summary>
        private HttpResponseMessage Login(HttpRequestMessage request)
        {
            log.Debug(Constant.DEBUG_START);

            string sign = ApiQueryUtil.QueryHeader(Constant.HTTP_HEADER_SIGN);
            string cmd = ApiQueryUtil.QueryHeader(Constant.HTTP_HEADER_CMD);
            string random = ApiQueryUtil.QueryHeader(Constant.HTTP_HEADER_RANDOM);

            string userName = ApiQueryUtil.QueryArgByPost("user_name");
            string password = ApiQueryUtil.QueryArgByPost("pwd");

            string terminalTypeString = ApiQueryUtil.QueryArgByPost("terminal_type");
            string terminalVersion = ApiQueryUtil.QueryArgByPost("terminal_version");
            string appVersion = ApiQueryUtil.QueryArgByPost("app_version");

            Dictionary<string, string> args = new Dictionary<string, string>()
            {
                { Constant.HTTP_HEADER_CMD, cmd },
                { Constant.HTTP_HEADER_RANDOM, random },
                { "user_name", userName },
                { "pwd", password },
                { "terminal_type", terminalTypeString },
                { "terminal_version", terminalVersion },
                { "app_version", appVersion }
            }.OrderBy(element => element.Key).ToDictionary(o => o.Key, p => p.Value);

            ServiceInvokeDTO<UserDTO> result = null;
            try
            {
                // Check sign
                if (securityService.CheckSign(args, Config.ApiSignSecretKey, sign))
                {
                    LoginRecord loginRecord = new LoginRecord();
                    loginRecord.TerminalType = Convert.ToInt32(terminalTypeString);
                    loginRecord.TerminalVersion = terminalVersion;
                    loginRecord.AppVersion = appVersion;
                    loginRecord.LoginTime = DateTime.Now;

                    result = userService.Login(userName, password, loginRecord);
                }
                else
                {
                    result = new ServiceInvokeDTO<UserDTO>(InvokeCode.SYS_SIGN_ERROR);
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
                result = new ServiceInvokeDTO<UserDTO>(InvokeCode.SYS_INNER_ERROR);
            }
            log.Debug(Constant.DEBUG_END);

            return request.CreateResponse(HttpStatusCode.OK, result);
        }
Example #26
0
        public async Task <IActionResult> Login(Account user)
        {
            using (var Db = new ApiManageContext())
            {
                var account = await Db.Account.FirstOrDefaultAsync(a => a.Email == user.Email);

                if (account == null)
                {
                    return(ResponseFail(-4, "未找到你的账号!"));
                }
                if (account.LoginFailCount == 10)
                {
                    return(ResponseFail(-5, "你的账号已被锁定,请联系系统管理员!"));
                }

                var _password   = Password.CreateConfusionPassword(user.Password);
                var ipAddress   = HttpContext.Connection.RemoteIpAddress.ToString();
                var userAgent   = HttpContext.Request.Headers.UserAgent();
                var loginRecord = new LoginRecord()
                {
                    AccountId  = account.AccountId,
                    IpAddress  = ipAddress,
                    UserAgent  = userAgent,
                    LoginState = 1,
                };

                if (account.Password != _password)
                {
                    account.LoginFailCount += 1;
                    Db.Account.Update(account);

                    loginRecord.LoginState = -1;
                    Db.LoginRecord.Add(loginRecord);
                    await Db.SaveChangesAsync();

                    var errorText    = "账号或密码错误!";
                    var chanceNumber = 10 - account.LoginFailCount;
                    if (account.LoginFailCount > 4)
                    {
                        errorText = $"账号或密码错误!你还有{chanceNumber}次机会!";
                    }
                    if (chanceNumber == 0)
                    {
                        errorText = "你的账号已被锁定,请联系系统管理员!";
                    }
                    return(ResponseFail(-6, errorText));
                }

                Db.LoginRecord.Add(loginRecord);
                account.LoginFailCount = 0;
                Db.Account.Update(account);
                await Db.SaveChangesAsync();

                var authorization = new AuthorizationToken()
                {
                    AccountGuid = account.AccountId,
                    ValidTime   = DateTime.Now.ToUnixTime() + (AppSettings.TokenValidDays * 86400),
                    IpAddress   = ipAddress,
                    UserAgent   = userAgent
                };
                var authorizationJson = new Serialization().SerializeEntityToJson(authorization);
                var token             = authorizationJson.ToAesEncrypt(AppSettings.AesKey, AppSettings.AesIv);
                return(ResponseSuccess(token));
            }
        }
Example #27
0
        public LoginRecord ValidateLogin(LoginRecord login, string password)
        {
            var isValid = _passwordService.ValidatePassword(login.Password, password);

            return(isValid ? login : null);
        }
        public override bool Process(IAppContext context, float time)
        {
            var dialogManager = _context.GetDialogManager();

            if (LoginRecord.CurrentLoginType == LoginRecord.Wechat && !_isServerVerifyWechatSucc)
            {
                RefreshWechatAuthResult(context);
                RefreshWechatLoginResult(context);
                return(false);
            }

            if (!_loginStarted)
            {
                return(true);
            }

            var dataRepository = _context.GetDataRepository();
            var container      = dataRepository.GetContainer <PLoginResult>(DataKey.PLoginResult);
            var res            = container.Read();

            if ((res == null) && ((time - _startLoginTime) > LoginResultTimeOut))
            {
                _isTimeout = true;
                return(true);
            }

            if (res == null)
            {
                return(false);
            }

            var dialog = context.GetDialogManager();

            if (res.result != ResultCode.OK)
            {
                // 登陆出错了,弹出对话框提示玩家。
                switch (res.result)
                {
                case ResultCode.P_LOGIN_INVALID_CLIENT_VERSION:
                    dialogManager.ShowToast("客户端版本无效,请下载最新的客户端使用!", 4, true);
                    break;

                case ResultCode.P_LOGIN_USER_NOT_FOUND:
                    dialogManager.ShowToast("用户不存在!", 2, true);
                    break;

                case ResultCode.P_LOGIN_PASSWORD_WRONG:
                    dialogManager.ShowToast("密码错误!", 2, true);
                    break;

                case ResultCode.P_LOGIN_NO_HALL_SERVER:
                    dialogManager.ShowToast("没有找到服务器,请稍后重新登陆!", 4, true);
                    break;

                case ResultCode.P_USER_WRONG_DEVICE:
                    dialogManager.ShowToast("登陆设备错误,请重新使用游客登陆!", 4, true);
                    // 清空当前记录的visitorUsername。
                    ClearVisitorUsername(context);
                    // 下一次自动使用游客登陆。
                    LoginRecord.LastLoginType = LoginRecord.Visitor;
                    LoginRecord.SaveAll();
                    break;
                }

                dialog.ShowConfirmBox("登陆失败,res.result ==" + res.result, true, "重新登录", () => { ChangeAccount(); }, false, "", null, false, false, false);
            }
            else
            {
                dialog.ShowConfirmBox("PLoginResult.username = "******"\n\nPLoginResult.token = " + res.token
                                      + "\n\nPLoginResult.hall_server_addr = " + res.hall_server_addr, true,
                                      "重新登录", () => { ChangeAccount(); }, true, "正式登录",
                                      () =>
                {
                    AssetBundle.UnloadAllAssetBundles(false);
                    SceneManager.LoadScene("GameCore");
                }, false, false, false);
            }

            LoginRecord.LastLoginType = LoginRecord.CurrentLoginType;

            return(true);
        }
Example #29
0
 public void VisitorLogin()
 {
     LoginRecord.CurrentLoginType = LoginRecord.Visitor;
     LoginRecord.SaveAll();
 }
Example #30
0
        /// <summary>
        /// 用户登录记录模型映射
        /// </summary>
        public static LoginRecord ToModel(this LoginRecordInfo loginRecordInfo)
        {
            LoginRecord loginRecord = loginRecordInfo.Map <LoginRecordInfo, LoginRecord>();

            return(loginRecord);
        }
Example #31
0
        /// <summary>
        /// 登录记录映射
        /// </summary>
        public static LoginRecordInfo ToDTO(this LoginRecord loginRecord)
        {
            LoginRecordInfo recordInfo = loginRecord.Map <LoginRecord, LoginRecordInfo>();

            return(recordInfo);
        }
Example #32
0
 /// <summary>
 /// 登录记录映射
 /// </summary>
 /// <param name="loginRecord">登录记录户领域模型</param>
 /// <returns>登录记录数据传输对象</returns>
 public static LoginRecordInfo ToDTO(this LoginRecord loginRecord)
 {
     return(Transform <LoginRecord, LoginRecordInfo> .Map(loginRecord));
 }
        private bool CheckVisitorRegularizeResult()
        {
            var res = _visitorRegularizeResult.Read();

            if (res == null)
            {
                return(false);
            }

            var dialogManager = GetDialogManager();

            dialogManager.ShowWaitingDialog(false);

            if (res.result == ResultCode.OK)
            {
                // 转正成功。
                GetAppController().ClearAppStateData();
                dialogManager.ShowConfirmBox(
                    "恭喜您转正成功!",
                    true, "马上登陆", () =>
                {
                    LoginRecord.LastUsername        = _regularizeUsername;
                    LoginRecord.LastPassword        = _regularizePassword;
                    LoginRecord.LastLoginType       = LoginRecord.NormalUser;
                    LoginRecord.LastVisitorUsername = _regularizeUsername;
                    LoginRecord.SaveAll();

                    MyLog.InfoWithFrame("VisitorRegularize",
                                        string.Format("save visitorUsername:{0}", _regularizeUsername));
#if UNITY_IOS
                    GetIosSDK().SaveUsername(_regularizeUsername);
#endif
#if UNITY_ANDROID // TODO 将visitorUsername保存到安卓客户端中。
#endif

                    GetNetworkManager().InitLogin();
                },
                    false, null, null,
                    true, false, false);

                GetRemoteAPI().RequestUserInfo();

                Hide();
            }
            else
            {
                switch (res.result)
                {
                case ResultCode.P_REGULARIZE_NO_VISITOR:
                    dialogManager.ShowMessageBox("转正失败,当前游客数据不存在!");
                    break;

                case ResultCode.P_REGISTER_USERNAME_ILLEGAL:
                    dialogManager.ShowMessageBox("账号格式不正确!只能包含字母、数字和下划线");
                    break;

                case ResultCode.P_REGISTER_PASSWORD_ILLEGAL:
                    dialogManager.ShowMessageBox("密码格式不正确!只能包含字母、数字和下划线");
                    break;

                case ResultCode.P_REGISTER_NICKNAME_ILLEGAL:
                    dialogManager.ShowMessageBox("昵称不合法!\n不能包含回车字符,长度不能超过16个字");
                    break;

                case ResultCode.P_REGISTER_USER_EXIST:
                    dialogManager.ShowMessageBox("账号已存在,请换一个重试");
                    break;

                default:
                    dialogManager.ShowToast("转正失败!", 2, true);
                    break;
                }
            }

            return(true);
        }