/// <summary> /// /// </summary> /// <param name="user"></param> public static void AddLoginLog(SysUser user) { var log = new SysLoginLog(); log.LoginTime = DateTime.Now; log.LogoutTime = DateTime.Now.AddMinutes(2); //log.OtherInfo = GetRequestParams(HttpContext.Current.Request); log.TenantId = user.TenantId; log.UserId = user.UserId; log.ClientIp = WebClient.GetClientIp(); _dataAccess.AddEntity(log); HttpContext.Current.Session["login-logId"] = log.LogId; }
public int Add(SysLoginLog model) { int result; try { db.SysLoginLog.Add(model); result = db.SaveChanges(); } catch (Exception ex) { result = 0; LogUtil.Exception("ExceptionLogger", ex); } return(result); }
/// <summary> /// 记录登陆日志 /// </summary> /// <param name="log"></param> public void EmitLog(SysLoginLog log) { if (log != null) { log.Enabled = 1; log.DelDate = null; log.LogOutDate = null; ServiceProvider provider = new ServiceProvider(); provider.RegisterService <SysLoginLogService>(true); using (var service = provider.GetService <SysLoginLogService>()) { LogHelper.WriteInfoLog($"login info:{JsonHelper.SerializeObject(log)}"); service.Add(log); } } }
public async Task <JsonResult> SignOut() { AuthorizationUser user = AuthenticationHelper.Current(); if (user != null) { SysLoginLog log = _sysLoginLogService.FindEntity(user.LoginId); if (log != null) { log.SignOutTime = DateTime.Now; TimeSpan ts = log.SignOutTime.Value - log.LoginTime; log.StandingTime = ts.TotalMinutes; await _sysLoginLogService.UpdateAsync(log); } } await AuthenticationHelper.SignOut(); return(Json(new OperateResult("退出成功", ResultStatus.SignOut))); }
/// <summary> /// 刷新在线时间 /// </summary> public static void SetAlive() { var session = new SessionManager.SessionExt(HttpContext.Current); if (!session.Exists("login-logId")) { return; } lock (lkhelp) { var exec = false;//是否需要执行数据库更新操作 var logId = (int)session["login-logId"]; if (lastUpDateTimes.ContainsKey(logId)) { var lastTime = lastUpDateTimes[logId]; if ((DateTime.Now - lastTime).TotalMinutes >= 1) { exec = true; lastUpDateTimes[logId] = DateTime.Now; } } else { lastUpDateTimes.Add(logId, DateTime.Now); exec = true; } if (exec) { SysLoginLog log = _dataAccess.Get <SysLoginLog>(logId); if (log == null) { return; } log.LogoutTime = DateTime.Now; _dataAccess.UpdateField("Sys_LoginLog", "LogoutTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "Sys_LoginLog.LogId=" + logId); } } }
public ResponseResult <CurrentUserModel> SignIn(LoginModel model) { try { if (ApiCacheDic.Get(ApiCacheDic.RedirectUri) == null) { var u = Request.RequestUri.GetLeftPart(UriPartial.Authority); ApiCacheDic.Add(ApiCacheDic.RedirectUri, u, DateTime.Now.AddYears(1)); } LogHelper.WriteInfoLog("SignIn...."); #region 参数验证 if (string.IsNullOrEmpty(model.LoginName)) { return(ResponseResult <CurrentUserModel> .GenFaildResponse(ResultCode.UsernameIsNull)); } if (string.IsNullOrEmpty(model.Password)) { return(ResponseResult <CurrentUserModel> .GenFaildResponse(ResultCode.PasswordIsNull)); } #endregion HttpRequestBase request = Context.Request; ExploreHelper eh = new ExploreHelper(request); SysLoginLog logEntity = new SysLoginLog { ClientIpAddress = eh.ClientIP, ClientName = eh.ClientMachineName, Enabled = 1, LogDate = DateTime.Now }; //登录日志 try { logEntity.IPNum = (int)StringHelper.IPToInt(eh.ClientIP); } catch { logEntity.IPNum = 0; } ResultCode code = ResultCode.Success; var service = GetService <SysUserService>(); var data = service.Login(model.LoginName, model.Password); if (data != null) { var token = new SysLoginTokenModel(data.UserDepId, data.Id) { UserId = data.Id }; var services = GetService <SysLoginTokenService>(); services.Add(new SysLoginToken() { UserId = data.Id, CustomerUser = data.UserType, CustomerId = data.UserCustomerId, Token = token.Token, InDate = token.InDate, ExpriedTime = token.ExpriedTime, AccessChannelId = 0, }); var currentUserModel = new CurrentUserModel { LoginName = model.LoginName, UserId = data.Id, UserIsFreeze = data.UserIsFreeze ? 0 : 1, UserIsManage = data.UserIsManage, UserName = data.UserName, UserPosition = data.UserPosition, UserCustomerId = data.UserCustomerId, Token = token.Token }; logEntity.UserId = currentUserModel.UserId; logEntity.Token = token.Token; logEntity.UserName = currentUserModel.UserName; logEntity.LogDate = System.DateTime.Now; if (data.DelState == 1 || data.DepDelState == 1 || data.CompanyDelState == 1) { code = ResultCode.UserDeleted; logEntity.IsSucceed = 0; logEntity.LogReason = "用户已被删除"; WriteLoginLog.WriteLogLogin(logEntity);//写入登录日志 } else if (data.Enabled == 0) { logEntity.IsSucceed = 0; logEntity.LogReason = "用户已被冻结"; WriteLoginLog.WriteLogLogin(logEntity);//写入登录日志 } else { SignInByIdentity(data, token); code = ResultCode.Success; WriteLoginLog.WriteLogLogin(logEntity);//写入登录日志 } return(ResponseResult <CurrentUserModel> .GenSuccessResponse(currentUserModel)); } else { code = ResultCode.UserWrongPassword; logEntity.InUserType = 1; logEntity.IsSucceed = 0; logEntity.LogReason = "用户不存在或者密码错误"; WriteLoginLog.WriteLogLogin(logEntity);//写入登录日志 return(ResponseResult <CurrentUserModel> .GenFaildResponse(code)); } } catch (Exception ex) { LogHelper.WriteErrorLog(HttpContext.Current.Request.RawUrl, ex); return(ResponseResult <CurrentUserModel> .GenSuccessResponse(ex.Message)); } }
public async Task <UserValidateDto> Login(UserValidateInputDto inputDto) { var user = await _userRepository.FetchAsync(x => new { x.Password, x.Salt, x.Name, x.Email, x.RoleId, x.Account, x.ID, x.Status }, x => x.Account == inputDto.Account); var log = new SysLoginLog() { ID = new Snowflake(1, 1).NextId(), Account = inputDto.Account, CreateTime = DateTime.Now, Device = "web", RemoteIpAddress = _userContext.RemoteIpAddress, Message = string.Empty, Succeed = false, UserId = user?.ID, UserName = user?.Name, }; if (user == null) { var errorModel = new ErrorModel(ErrorCode.NotFound, "用户名或密码错误"); log.Message = JsonConvert.SerializeObject(errorModel); throw new BusinessException(errorModel); } else { if (user.Status != 1) { var errorModel = new ErrorModel(ErrorCode.TooManyRequests, "账号已锁定"); log.Message = JsonConvert.SerializeObject(errorModel); await _loginLogRepository.InsertAsync(log); throw new BusinessException(errorModel); } var logins = await _loginLogRepository.SelectAsync(5, x => new { x.ID, x.Succeed, x.CreateTime }, x => x.UserId == user.ID, x => x.ID, false); var failLoginCount = logins.Count(x => x.Succeed == false); if (failLoginCount == 5) { var errorModel = new ErrorModel(ErrorCode.TooManyRequests, "连续登录失败次数超过5次,账号已锁定"); log.Message = JsonConvert.SerializeObject(errorModel); await _userRepository.UpdateAsync(new SysUser() { ID = user.ID, Status = 2 }, x => x.Status); throw new BusinessException(errorModel); } if (HashHelper.GetHashedString(HashType.MD5, inputDto.Password, user.Salt) != user.Password) { var errorModel = new ErrorModel(ErrorCode.NotFound, "用户名或密码错误"); log.Message = JsonConvert.SerializeObject(errorModel); await _loginLogRepository.InsertAsync(log); throw new BusinessException(errorModel); } if (string.IsNullOrEmpty(user.RoleId)) { var errorModel = new ErrorModel(ErrorCode.Forbidden, "未分配任务角色,请联系管理员"); log.Message = JsonConvert.SerializeObject(errorModel); await _loginLogRepository.InsertAsync(log); throw new BusinessException(errorModel); } } log.Message = "登录成功"; log.Succeed = true; await _loginLogRepository.InsertAsync(log); return(_mapper.Map <UserValidateDto>(user)); }
public bool Add(SysLoginLog model) { return(sysLoginLogDal.Add(model) == 0 ? false : true); }
/// <summary> /// 插入记录 /// </summary> /// <param name="model"></param> /// <returns></returns> public long Add(SysLoginLog model) { return(this._loginTokenRepository.Insert(model)); }
public static void WriteLogLogin(SysLoginLog logEntry) { LoginEmitter service = new LoginEmitter(); service.EmitLog(logEntry); }