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 }
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()); }
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; }
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); }
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)); }
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; } }
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(); }; }
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")); }
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); } }
/// <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(); }
/// <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); } }
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); }
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); }
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); } } }
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); }
/// <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); }
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)); } }
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); }
public void VisitorLogin() { LoginRecord.CurrentLoginType = LoginRecord.Visitor; LoginRecord.SaveAll(); }
/// <summary> /// 用户登录记录模型映射 /// </summary> public static LoginRecord ToModel(this LoginRecordInfo loginRecordInfo) { LoginRecord loginRecord = loginRecordInfo.Map <LoginRecordInfo, LoginRecord>(); return(loginRecord); }
/// <summary> /// 登录记录映射 /// </summary> public static LoginRecordInfo ToDTO(this LoginRecord loginRecord) { LoginRecordInfo recordInfo = loginRecord.Map <LoginRecord, LoginRecordInfo>(); return(recordInfo); }
/// <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); }