Member 14359490 Ответов: 2

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


я реализовал приложение викторины в asp.net и c#.

в моем приложении один пользователь вошел в систему и делает тест.

в середине теста он закроет браузер, не выходя из системы.

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


как я могу решить эту проблему. с помощью сессий или куки объяснить с примером

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

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

2 Ответов

Рейтинг:
19

Patrice T

Цитата:
затем другой пользователь вошел в то же приложение, но с другим именем пользователя и паролем, но этот пользователь вошел в предыдущий сеанс пользователя.

Как сказать? Ваше управление сеансами неверно.

Как мы можем догадаться, что ты сделал не так?

Как вы уже сказали, новый пользователь входит в систему с другим именем пользователя и попадает в сеанс предыдущего пользователя.
Цитата:
пользователь закроет браузер на 4-м модуле без выхода из системы.
затем новый пользователь вошел в то же приложение, но с другими учетными данными, но он входит в 4-й модуль, а не в 1-й модуль.
поэтому он входит в предыдущую пользовательскую сессию.

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


Рейтинг:
1

OriginalGriff

Проблема в том, что вы не разделяете пользователей должным образом: вам нужно либо использовать базу данных, либо файлы cookie для хранения прогресса каждого пользователя отдельно. Файлы cookie означают, что они специфичны для этого браузера на этой машине, что, вероятно, является неправильным подходом (и означает, что вам нужно следовать правилам, установленным для GDPR, которые могут быть обширными).

Что вам нужно сделать, так это использовать объект сеанса для связывания сеанса браузера с конкретным пользователем: войдите в него через БД и сохраните идентификатор пользователя в сеансе. Затем, когда они добиваются прогресса, вы сохраняете это в БД против этого конкретного пользователя.

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

Это звучит так, как будто в данный момент Вы используете static переменная или простой файл, чтобы "сказать вам", как далеко продвинулся пользователь, и это никогда не будет работать в многопользовательской системе.