public bool VerifyUser(PasswordAction passwordAction, out double m, out double sigma, out double duration) { using (PasswordActionContext tempContext = new PasswordActionContext()) { m = 0; sigma = 0; duration = TimeSpanConverter.TotalSeconds(passwordAction.TimeDuration); //bool result = true; tempContext.PasswordActions .Include(p => p.SymbolActions) .Where(p => p.UserId == passwordAction.UserId) .Where(p => p.ValidPassword == passwordAction.ValidPassword) .Load(); if (tempContext.PasswordActions.Local.Count == 0) { //result = false; return(false); } DurationsStatistics durationStatistics = new DurationsStatistics(tempContext.PasswordActions.Local); m = durationStatistics.MathExpectation; sigma = durationStatistics.Sigma; if (Math.Abs(m - duration) > sigma) { return(false); } } return(true); }
protected override void Init() { eveninigTime = new TimeSpan(18, 0, 0); morningTime = new TimeSpan(6, 0, 0); daytimePasswords = new PasswordActionContext(); eveningtimePasswords = new PasswordActionContext(); LoadData(); DaytimeStatistics = new DurationsStatistics(daytimePasswords.PasswordActions.Local); EveningtimeStatistics = new DurationsStatistics(eveningtimePasswords.PasswordActions.Local); base.Init(); }
public User IdentifyUser(PasswordAction passwordAction, out double m, out double duration, out double different) { m = 0; different = 0; duration = TimeSpanConverter.TotalSeconds(passwordAction.TimeDuration); List <User> users = new List <User>(); using (PasswordActionContext tempContext = new PasswordActionContext()) { //tempContext.PasswordActions.Where(p => p.ValidPassword == passwordAction.ValidPassword); //tempContext.Users.Any( .Load(); users = tempContext.Users.Include(u => u.PasswordActions).ToList(); } List <User> newUsers = new List <User>(); foreach (var user in users) { if (user.PasswordActions.Any(p => p.ValidPassword == passwordAction.ValidPassword)) { newUsers.Add(user); } } User identifyUser = null; if (newUsers.Count == 0) { return(identifyUser); } foreach (var tempUser in newUsers) { using (PasswordActionContext newTempContext = new PasswordActionContext()) { newTempContext.PasswordActions .Include(p => p.SymbolActions) .Where(p => p.UserId == tempUser.Id) .Load(); DurationsStatistics statistics = new DurationsStatistics(newTempContext.PasswordActions.Local); if (identifyUser == null || Math.Abs(statistics.MathExpectation - duration) < different) { m = statistics.MathExpectation; different = Math.Abs(m - duration); identifyUser = tempUser; } } } return(identifyUser); // tempContext.Users // .Include(u => u.PasswordActions) // .Include(u => u.PasswordActions.Select(p => p.SymbolActions)) // .Load(); //} //return true; //PasswordAction mostRelevantPasswordAction = passwordActions.FirstOrDefault(p => p.ValidPassword == passwordAction.ValidPassword); //User user = Context.Users.Find(mostRelevantPasswordAction.UserId); //return user; }