2013-11-27 3 views
2

Привет Я работаю над сессиями и не знаю, сыворотка ID сессии создается так же, как и предыдущая.Повторяющийся идентификатор сеанса

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

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

Кодекс приведен ниже

войти в CS файл

HttpContext.Current.Session["user"]=user; 
HttpContext.Current.Session["sessionid"]=HttpContext.Current.Session.SessionID; 

когда бревенчатые пользователь аутов

журнала из CS файл

HttpContext.Current.Session.Abandon(); 

Жду вашей помощи. Заранее спасибо

+0

Выберите лучший ответ, если какой-либо из ответов работал для u –

ответ

4

Вместо этого вы можете использовать Guid.NewGuid().ToString(). ASP.NET не гарантирует, что идентификатор сеанса уникален за пределами жизни сеанса.

В то время как каждая из которых сформирована GUID не гарантируется быть уникальным, общее число уникальных ключей> (2^128 или 3,4 × 10^38) настолько велика, что вероятность того же числа генерируются два раза> является очень маленький. Например, рассмотрим наблюдаемую вселенную, которая содержит около 5 × 10^22> звезд; каждая звезда может иметь 6,8 × 10^15 универсально уникальных GUID s.

Вы всегда можете доверять GUID, чтобы быть уникальным всегда. То реальная цель GUID. This SO Question спрашивает об уникальном Id.

+0

ok позвольте мне использовать GUID Спасибо за информацию :) –

+0

Вы всегда рады :-) –

5

ASP.NET не гарантирует, что идентификатор сеанса уникален за пределами жизни этого сеанса (т. Е. Нет живой сессии с тем же идентификатором), я боюсь. Вы должны использовать свой собственный уникальный идентификатор, если хотите эту функциональность.

+0

ok. Я получил его Большое спасибо за информацию :) –

2

Вы можете использовать GUID, как было предложено Субином.

Во время создания сеансов для пользователя используйте приведенный ниже код.

HttpContext.Current.Session["sessionid"]=Guid.NewGuid().ToString();

В то время как сохранение его в БД, используйте обратное:

User.dbField = HttpContext.Current.Session["sessionid"]

1

Поскольку пользователи являются членами на вашем сайте, они уже должны иметь uniqueID, будь это email address или a Id? Вы можете использовать это, чтобы делать записи в Login table.

Примечание: Существует оговорка к этому процессу; он будет работать нормально, если пользователь clicks на logout button, вы можете удалить uniqueId из Login Table или статус обновления для выхода из системы, независимо от того, каким образом у вас установлена ​​эта настройка. Но, если пользователь просто закрывает браузер, никакое событие не будет запущено для выполнения того же действия, поэтому пользователь останется в системе.

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

Смежные вопросы