Exemplo n.º 1
0
        public int InsertLoginAudit(LoginAudit model)
        {
            string sql  = "insert into \"LoginAudit\"(\"UserId\",\"OrganizationId\",\"LoginDate\",\"Result\") values(@userId, @organizationId, @loginDate, B'@Status') RETURNING \"LoginAuditId\"";
            object data = new { userId = model.UserId, organizationId = model.OrganizationId, loginDate = DateTime.Now, Status = model.Result };

            return(_connection.ExecuteScalar <int>(sql, data));
        }
Exemplo n.º 2
0
        internal static LoginAudit Add(LoginAudit info)
        {
            string sql = "insert into LoginAudit(SessionId,FailTotal) value(@SessionId,@FailTotal);select @@IDENTITY;";

            info.LoginAuditId = InsertWithReturnID <LoginAudit, int>(con, sql, info);
            return(info);
        }
Exemplo n.º 3
0
 public LoginAuditVo(LoginAudit audit)
 {
     Id          = audit.Id;
     FechaInicio = audit.FechaInicio.ToDisplayDateTime();
     FechaFin    = audit.FechaFin.HasValue ? (DateTime?)audit.FechaFin.Value.ToDisplayDateTime() : null;
     Ip          = audit.IP;
     Usuario     = audit.Usuario.NombreUsuario;
 }
Exemplo n.º 4
0
 public static int SaveLoginAudit(LoginAudit loginAudit)
 {
     using (LinkManagementEntities entities = new LinkManagementEntities())
     {
         entities.LoginAudits.Add(loginAudit);
         entities.SaveChanges();
     }
     return(1);
 }
Exemplo n.º 5
0
        public FunctionOpenResult <string> CompanyUserLogin(string loginKey, string pwd, string sessionKey)
        {
            FunctionOpenResult <string> result = new FunctionOpenResult <string>()
            {
                ActionResult = true
            };
            //获取会话数据
            UserSession userSession = UserSessionDal.Get(sessionKey);
            int         sessionId   = (userSession == null)?0:userSession.SessionId;
            //先检查失败次数
            LoginAudit loginAudit = (sessionId > 0)? LoginAuditDal.Get(sessionId): LoginAuditDal.Add(new LoginAudit());

            if ((loginAudit != null) && (loginAudit.FailTotal >= 3))
            {
                result.ActionResult = false;
                result.ErrorMsg     = "密码错误太多";
                result.ErrorCode    = ErrorCode.PwdAttack;
                return(result);
            }
            //验证口令
            UserSession loginSession = CompanyLoginDal.Get(loginKey, pwd);

            if (loginSession == null)
            {
                loginSession = new UserSession();
            }
            loginSession.SessionKey = sessionKey;
            if (loginSession.UserId > 0)
            {
                loginSession.Status    = 1;
                loginSession.SessionId = UserSessionDal.Add(loginSession);
                userSession            = loginSession;
                //添加会话缓存
                RedisComponent.SaveCache <UserSession>(String.Format(UserAuthorityCacheKey.AuthorityCacheKey, sessionKey), loginSession);
                result.Data = loginSession.SessionKey;
            }
            else
            {
                loginAudit.FailTotal++;
                result.ActionResult = false;
                result.ErrorMsg     = "验证未通过";
                result.ErrorCode    = ErrorCode.LoginFail;
            }
            if (userSession == null)
            {
                loginSession.Status = 1;
                UserSessionDal.Add(loginSession);
            }
            return(result);
        }
Exemplo n.º 6
0
        public void TrackLogin(LoginAudit audit)
        {
            try
            {
                SqlParameter[] para = new SqlParameter[] {
                    new SqlParameter("@UserName", audit.UserName),
                    new SqlParameter("@IPAddress", audit.IPAddress),
                    new SqlParameter("@LoginDate", audit.LoginDate),
                    new SqlParameter("@LoginStatus", audit.LoginStatus)
                };

                DataSet result = BKICSQL.eds(UsersSP.LoginAudit, para);
            }
            catch (Exception exc)
            {
                throw;
            }
        }
Exemplo n.º 7
0
        private void RecordLoginAudit(ApplicationUser user, string activity)
        {
            LoginAudit loginAudit = new LoginAudit {
                UserName = user.UserName, TimeRecorded = DateTime.Now, Activity = activity
            };

            if (ModelState.IsValid)
            {
                db.LoginAudits.Add(loginAudit);
                db.SaveChanges();
            }
            else
            {
                string error = "";
                foreach (ModelState modelState in ViewData.ModelState.Values)
                {
                    foreach (ModelError err in modelState.Errors)
                    {
                        error = error + " \n" + err.ErrorMessage;
                    }
                }
            }
        }
Exemplo n.º 8
0
        public async Task Login(string token, string operatingSystem, string ipAddress, string nameVersionClient)
        {
            var jwtAuthProviderReader = (JwtAuthProviderReader)AuthenticateService.GetAuthProvider("jwt");

            try
            {
                var jwtPayload = jwtAuthProviderReader.GetVerifiedJwtPayload(new BasicHttpRequest(), token.Split('.'));
                await Groups.AddToGroupAsync(this.Context.ConnectionId, _loginedGroup);

                Context.Items["login"]   = jwtPayload["name"];
                Context.Items["uid"]     = jwtPayload["sub"];
                Context.Items["session"] = jwtPayload["session"];

                var user = await _ravenSession.LoadAsync <User>(jwtPayload["sub"]);

                if (user != null)
                {
                    Context.Items["nickname"] = user.DisplayName;
                }

                var logOn = new LogOn
                {
                    Id        = jwtPayload["sub"],
                    UserLogin = jwtPayload["name"],
                };
                if (long.TryParse(jwtPayload["exp"], out long expire))
                {
                    logOn.ExpireTime = DateTimeOffset.FromUnixTimeSeconds(expire);
                    if (logOn.ExpireTime < DateTimeOffset.UtcNow)
                    {
                        throw new TokenException("Token is expired");
                    }
                }

                await Clients.Caller.SendAsync(logOn);

                var userLoginAudit = await _ravenSession.LoadAsync <LoginAudit>(jwtPayload["sub"] + "/LoginAudit");

                if (userLoginAudit != null)
                {
                    if (jwtPayload["session"] != userLoginAudit.SessionId)
                    {
                        userLoginAudit.NameVersionClient = nameVersionClient;
                        userLoginAudit.OperatingSystem   = operatingSystem;
                        userLoginAudit.IpAddress         = ipAddress;
                        userLoginAudit.DateOfEntry       = DateTime.Now;
                        userLoginAudit.SessionId         = jwtPayload["session"];

                        await _ravenSession.StoreAsync(userLoginAudit);

                        await _ravenSession.SaveChangesAsync();
                    }
                }
                else
                {
                    userLoginAudit = new LoginAudit
                    {
                        Id = jwtPayload["sub"] + "/LoginAudit",
                        OperatingSystem   = operatingSystem,
                        DateOfEntry       = DateTime.Now,
                        IpAddress         = ipAddress,
                        NameVersionClient = nameVersionClient,
                        SessionId         = jwtPayload["session"]
                    };
                    await _ravenSession.StoreAsync(userLoginAudit);

                    await _ravenSession.SaveChangesAsync();
                }
                Log.Information($"Connected {Context.Items["login"]}({Context.Items["uid"]}) with session {Context.Items["session"]}");
            }
            catch (Exception e)
            {
                await Clients.Caller.SendAsync(new LogOn
                {
                    Error = true
                });

                Log.Warning($"Bad token from connection {Context.ConnectionId}");
            }
        }