ASP.NET | Аутентификация по формам | Получить ВСЕ зарегистрированных пользователей (список всех пользователей или количество) - PullRequest
8 голосов
/ 30 октября 2009

Я использую .NET 3.5. Также используется проверка подлинности с помощью форм.

Есть ли способ получить список ВСЕХ зарегистрированных пользователей или count в ASP.NET?

Примечание: я не использую членство и роли

Ответы [ 4 ]

6 голосов
/ 30 октября 2009

Нет, нет, если

  1. Вы определили один в своем коде

  2. Вы используете поставщик членства ASPNET по умолчанию, для которого определен метод GetNumberOfUsersOnline().

  3. Вы используете пользовательский поставщик членства и самостоятельно внедрили метод GetNumberOfUsersOnline()

Поставщик членства в ASPNET по умолчанию вычисляет количество пользователей в сети, выполняя запросы к базе данных SQL Server и проверяя LastActivityDate, хранимые для каждого пользователя, по определенному свойству UserIsOnlineTimeWindow, которое вы можете установить в web.config. Если LastActivityDate больше текущего времени минус значение UserIsOnlineTimeWindow (которое представляет минуты), то пользователь считается подключенным к сети.

Если вы хотите сделать что-то подобное, то вы можете рассмотреть возможность реализации аналогичного метода. Вы можете увидеть код поставщиков по умолчанию, загрузив исходный код . Чтобы завершить картину, вы также можете запустить aspnet_regsql.exe , чтобы увидеть хранимые процедуры, используемые поставщиками по умолчанию.

4 голосов
/ 30 октября 2009

Членство у провайдера действительно имеет свои преимущества, но просто для отслеживания пользователей в сети вы также можете:

  1. Добавьте столбец LastActivityDate в свою таблицу пользователей и обновите его из своего кода при входе в систему и на всех страницах загрузки для этого пользователя.

  2. И чтобы получить пользовательский онлайн в течение X минут, просто используйте следующий sql

    Select * from Users where LastActivityDate >
    DATEADD(minute,  -(X), GETDATE())  
    
3 голосов
/ 30 октября 2009

Аутентификация с помощью форм сохраняла все указать в файле cookie, который передается пользовательские браузеры.

(Это позволяет проверке подлинности с помощью форм работать в веб-ферме)

Поэтому невозможно получить список зарегистрированных пользователей и т. Д. Из стандартной проверки подлинности с помощью форм.

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

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


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

1 голос
/ 30 октября 2009

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

...