2012-02-13 45 views
1

當一個用戶登錄我的網站時,此用戶有一個會話[sessionid喜歡:xxxx-xxxx-xxxx-xx],當他再次登錄時,他有一個不同的會話[sessionid喜歡: yyyy-yyyy-yy-yyy],在他再次登錄會話[會話id:yyyy-yyyy-yy-yyy]後,如何刪除之前的會話[sessionid:xxxx-xxxx-xxxx-xx]。Asp.net通過sessionid銷燬會話

摧毀一個會議在另一個塞森! 這可能嗎? 非常感謝!

+0

你是什麼意思「他再次登錄到別處」?你所要求的不應該是必要的。聽起來像你做錯了。 – 2012-02-13 09:55:10

回答

0

不用擔心,如果你擔心它意味着你的應用程序設計不好。

Session_End事件中的Global.asax中放置了一個記錄器,您將能夠通過讀取日誌文件來跟蹤未使用的會話何時關閉。

+0

這不是我想要的。當這個用戶再次登錄時,你會發現以前的會話仍然存在,也可以做某事,因爲他們有不同的sessionid。我想破壞以前的會議的安全。不管怎樣,謝謝你。 – cloud 2012-02-13 10:06:39

+0

嘗試使用不同的瀏覽器(IE,FF,CHROME ...)登錄同一網站。 – cloud 2012-02-13 10:07:50

+0

瞭解它,檢查這一個:http://stackoverflow.com/questions/2645102/opening-a-new-browser-window-with-a-new-session-id-in-aspnet – 2012-02-13 10:11:51

2

這個請求似乎有很多混淆。我相信這個人想知道如何防止併發用戶會話。

建議的方法:當用戶成功登錄時,使此新用戶會話處於活動狀態,並放棄用戶的任何其他現有活動會話。

我的解決辦法:

  1. 在登錄後,SessionID保存到數據庫,參考用戶的帳戶
  2. 在網站主文件(或任何文件,你可以用你的網站的所有頁面共享),將當前SessionID(HttpContext.Current.Session.SessionID)與Saved SessionID進行比較。
  3. 如果兩者不匹配,則放棄會話(Session.Abandon)。

這是一個簡單的解決方案,但它應該解決這個問題。