2009-12-26 5 views
2

У меня есть игровой сайт. Время от времени мне приходится приостанавливать пользователей по разным причинам. Они обманывают, или они плохие пользователи с плохими намерениями. После приостановки пользователей они больше не могут входить в систему на моем сайте до истечения срока приостановки.Убит пользовательский сеанс ASP.NET от сеанса администратора

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

Есть ли что-нибудь, что я могу сделать, чтобы убить сеанс пользователя из моей сессии ASP.NET? Я против использования SQL для хранения переменных сеанса пользователя.

Я предпочитаю проверять переменную сеанса/приложения ASP .NET на каждый запрос пользователя, и если эта переменная содержит идентификатор приостановленного пользователя, он немедленно выйдет из системы.

ответ

5

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

+0

Логины уже предотвращены. Проблема заключалась в том, чтобы немедленно выйти из системы (если они вошли в систему) после приостановки их с панели администратора. Ваша идея с переменной Cache звучит здорово для меня. Это связано с тем, что кеш является потокобезопасным. –

+0

Это правильный способ справиться с этим. Вы должны сделать чек на каждом сообщении, чтобы узнать, являются ли они по-прежнему действительным пользователем, если нет ... выпустите их. –