Dheerajs975 Ответов: 1

Предотвратить нескольких учетных записей в MVC


у меня есть две таблицы имя регистрация и логин,
когда пользователь входит в систему, идентификатор пользователя и его статус=1 будут храниться в таблице Logins, а когда пользователь выходит из системы, Статус станет 0.

моя проблема заключается в том, как я должен проверить во время входа в систему, что пользователь уже вошел в систему или нет,
любые условия if для проверки, ниже приведен мой код


public ActionResult GetLogin(Register d, Login r)
       {
           using (simpleEntities _LoginEntities = new simpleEntities())
           {
               var user = _LoginEntities.Registers.Where(u => u.Email.Equals(d.Email) && u.Password.Equals(d.Password)).FirstOrDefault();
               string message = "User already logged in";
                   //List<Login> abc = new List<Login>();
                   //bool aa = false;
                   //var user1 = _LoginEntities.Logins.Where(u => u.LogID.Equals(user.ID) && u.Status==(false)).FirstOrDefault();
                       if (user != null)
                       {

                                 //SELECT    *
                                 //  FROM    Notification n
                                 //  LEFT OUTER JOIN Acknowledgment a ON a.parent_id = n.id
                                 //      WHERE     (a.parent_id IS NULL OR a.status = @somevalue)
                           List<Login> ddd = new List<Login>();
                           ddd = (from a in db.Logins where a.LogID == user.ID where (a.Status == (false)) select a).ToList();
                           if (ddd!=null)
                           {
                               Session["ID"] = user.ID.ToString();
                               Session["Email"] = user.Email.ToString();
                               Session["Username"] = user.Fname.ToString() + "" + user.Lname.ToString();
                               return RedirectToAction("UserDashBoard");
                           }
                           else
                           {
                               return Json(message, JsonRequestBehavior.AllowGet);
                           }
                       }
                       return View();
                   }
                }


Что я уже пробовал:

я попробовал с условиями if, сначала он проверяет в таблице register, затем в таблице login, но безуспешно, пожалуйста, помогите мне с этим

F-ES Sitecore

Ты не можешь.

https://forums.asp.net/post/5825784.aspx

Dheerajs975

я просто хочу сделать свой сайт более безопасным... и это возможно,
например, когда пользователь вводит свои учетные данные для входа в систему, система сначала проверяет в таблице регистрации, что учетные данные верны или нет. если да, то он войдет в таблицу входа и проверит, что введенный статус входа в систему является истинным или ложным, если его истинный, то он не позволит войти в систему, а если его ложь, то пользователь будет перенаправлен на панель мониторинга или домашнюю страницу

F-ES Sitecore

Почему предотвращение нескольких Логинов делает ваш сайт более безопасным? Если я решу войти в свою веб-почту на двух вкладках, почему это менее безопасно, чем войти только один раз?

Dheerajs975

что я могу сделать, если клиент попросит меня предотвратить многократный вход в систему..?
автор хочет предотвратить несколько входов в систему с одним и тем же именем пользователя и паролем

F-ES Sitecore

Вы говорите им, что это невозможно, и объясняете, что в этом нет никакой ценности. Частью работы разработчика является управление ожиданиями клиентов.

Dave Kreskowiak

Веб-приложения обычно не имеют такого ограничения из-за своей отключенной природы. Думать об этом. Если пользователь входит в систему, выполняет какую-то работу, а затем закрывает окно браузера, не выходя из системы, что тогда? Каков ваш план, чтобы позволить пользователю снова войти в систему?

Предотвращение нескольких входов в систему не делает ваш сайт более безопасным, но делает его более похожим на службу поддержки и кошмар управления.

1 Ответов

Рейтинг:
2

ZurdoDev

Как уже упоминалось в комментариях, это плохая идея, чтобы сделать это. Однако все, что вам нужно сделать, это написать код для проверки флага в БД, чтобы увидеть, вошли ли они в систему. Вы захотите добавить какую-то опцию тайм-аута или сброса, чтобы, если пользователь закроет браузер без выхода из системы, у него все равно был способ вернуться обратно.