Q
遍歷現有會話對象
2
A
回答
2
添加到您的Global.asax
protected void Application_Start(object sender, EventArgs e)
{
Application["sessions"] = new List<HttpSessionState>();
}
protected void Session_Start(object sender, EventArgs e)
{
var sessions = (List<HttpSessionState>)Application["sessions"];
sessions.Add(this.Session);
}
protected void Session_End(object sender, EventArgs e)
{
var sessions = (List<HttpSessionState>)Application["sessions"];
sessions.Remove(this.Session);
}
現在,你可以通過你的會話重複這樣
var sessions = (List<HttpSessionState>)Application["sessions"];
foreach (var session in sessions)
...
爲了殺死其他會話中,你可以在對的Session_Start
方法檢查舊會議放棄它。這可能看起來像這樣。
protected void Session_Start(object sender, EventArgs e)
{
var userId = (int)this.Session["userId"];
foreach (var session in sessions)
if ((int)session["userId"] == userId)
session.Abandon();
var sessions = (List<HttpSessionState>)Application["sessions"];
sessions.Add(this.Session);
}
0
您可以將登錄的用戶保存到數據庫並檢查他們是否已經登錄,您可以阻止他們再次登錄。使用Global.asax下的Session_Start方法。
0
簡答題:沒有。
長答案:您需要實現您自己的會話提供程序。出於安全原因,一個會話無法引用任何其他會話。你必須經過並實施你自己的會話管理。
0
有一次我實現了這個功能,我將用戶標識(或者唯一的東西)存儲在應用程序變量,字典或數組中。登錄時很容易檢查應用程序字典中是否存在用戶標識。唯一真正的問題是沒有註銷並關閉瀏覽器的用戶。你永遠找不到一個可靠的方法來檢測這個事件。
0
即興:
在在session_start(通常是一個成功的登錄),在商店中用戶的查找表的用戶ID和會話ID(或在user表中新列)。
對於每個請求,您需要驗證用戶ID(存儲在會話中)和SessionID與存儲在查找表中的值匹配,作爲身份驗證步驟。
相關問題
- 1. 遍歷對象
- 2. 遍歷對象
- 3. 遍歷對象樹
- 4. 遍歷JSON對象
- 5. 遍歷JavaScript對象
- 6. 遍歷JSON對象
- 7. 遍歷JSON對象
- 8. 遍歷pyqt對象
- 9. 遍歷對象hirerarchy
- 10. 遍歷所有序列化對象
- 11. 如何遍歷所有Bundle對象
- 12. 遍歷Jframe中的所有對象
- 13. 遍歷所有項目中JSON對象
- 14. 循環遍歷類的所有對象
- 15. clojurescript遍歷對象的鍵
- 16. 離子2,遍歷對象
- 17. ActionScript - 如何遍歷對象?
- 18. 遍歷對象列表
- 19. 遍歷對象的數組
- 20. Laravel:遍歷對象數組
- 21. 遍歷JsonCpp中的對象
- 22. 遍歷對象/變量Swift
- 23. ,如何遍歷對象
- 24. JavaScript的 - 遍歷對象
- 25. 鬍鬚,遍歷JSON對象
- 26. 遍歷嵌套對象
- 27. 使用GetProperties遍歷對象
- 28. JSTL遍歷對象列表
- 29. JAVA遍歷json對象
- 30. 在javascript中遍歷對象