В моем приложении я не хочу, чтобы одно и то же имя пользователя входило в систему одновременно, поэтому у меня есть идея, но я не уверен, что это правильно.
1) Когда пользователь входит в систему, обновите статус (столбец «isOnLine» в пользовательской таблице в db) и сохраните время входа в сеанс, например:
Внутри метода входа в систему:
DateTime ltime=Datetime.now();
Dbservice.executeSql(update User set(isOnLine,lastLoginTime) value("1",ltime));
Session["logintime"]=ltime;
Когда другой пользователь пытается войти в систему, проверьте таблицу, чтобы узнать, зарегистрирован ли статус этого пользователя или нет. Если да, установите для «isOnline» значение «0», тогда он сможет войти в систему сейчас.
2) В методе Page_Onload () каждой защищенной страницы проверьте, равно ли время входа в сеанс времени в db:
string logtime=Dbservice.executeSelect("select lastLoginTime from user where xxxxx").Rows[0]["lastLoginTime"];
if(!Session["logintime"]==logtime){
//this user should offline now,redirect it to the login page
}
Интересно, мой путь правильный или нет?
Кроме того, я должен написать логику проверки в методе Page_onLoad каждой защищенной страницы, поэтому существует так много повторяющихся кодов, есть идеи, как этого избежать?
Так как вся страница на нашем сайте защищена!.
Спасибо.
UPDATE:
Запрещено одновременное подключение двух пользователей к сети, но разрешено, чтобы более поздний пользователь с правильным паролем мог принудительно отключить бывшего пользователя. Например:
user1 логин с "username = bill" и
"пароль = 000", значит, он сейчас на связи.
тогда user2 попытайтесь войти через
"username = bill" и
"пароль = 123", так как его пароль
недействителен, поэтому его запрос отклонен.
user3 попробуйте войти через
"username = bill" и
"пароль = 000", так как его пароль
действителен, поэтому у него есть выбор сделать
пользователь1 офлайн.
В этом случае, когда более поздний пользователь успешно входит в систему, но сеанс предыдущего пользователя также существует, поэтому я должен проверить, находится ли он в сети или нет в соответствии с временем входа в систему в сеансе.