내가 상속 한 Castle-Monorail 사이트를 수정 중이며 현재 온라인 사용자 목록을 보는 것이 유용 할 것임을 알았습니다. 현재 로그인 한 세션과 로그인하지 않은 세션을 구별 할 수 있도록 사이트의 어느 부분에 누가 액세스 할 수 있는지를 결정하는 필터가 있습니다. 활성 세션 목록을 쉽게 얻을 수있는 방법으로 로그인 한 사용자를 알아낼 수 있습니까?Castle-Monorail 사이트에 대한 현재 세션을 가져 옵니까?
1
A
답변
0
여기에 내가 함께 결국 해결책이다 :
(의 도움으로 : https://stackoverflow.com/q/1470571/126785와 켄 에고의 댓글)
Global.asax.cs에서: 다음
private static readonly object padlock = new object();
private static Dictionary<string,SessionData> sessions = new Dictionary<string,SessionData>();
public static Dictionary<string, SessionData> Sessions
{
get { lock (padlock) { return sessions; } }
}
public struct SessionData
{
public string Name { get; set; }
public int AccountId { get; set; }
public string CurrentLocation { get; set; }
}
protected void Session_Start(object sender, EventArgs e)
{
Sessions.Add(Session.SessionID, new SessionData());
}
protected void Session_End(object sender, EventArgs e)
{
Sessions.Remove(Session.SessionID);
}
public static void SetSessionData(string sessionId, int accountId, string name, string currentLoc)
{
Sessions.Remove(sessionId);
Sessions.Add(sessionId, new SessionData { AccountId = accountId, CurrentLocation = currentLoc, Name = name });
}
public static void SetCurrentLocation(string sessionId, string currentLoc)
{
SessionData currentData = Sessions[sessionId];
Sessions.Remove(sessionId);
Sessions.Add(sessionId, new SessionData { AccountId = currentData.AccountId, CurrentLocation = currentLoc, Name = currentData.Name });
}
로그인 :
Global.SetSessionData(((HttpSessionStateContainer)Session.SyncRoot).SessionID,account.Id,account.Name,"Logged In");
이제 가장 좋은 장소를 찾아야합니다. 그는에서 위치. 각 기능에서 전화가 약간 귀찮을 수 있습니다!
1
사용자 로그온 정보를 데이터베이스 나 응용 프로그램 변수에 저장하지 않는 한 쉬운 방법이 없다고 생각합니다. 얼마나 많은 활성 세션이 있는지 알 수 없습니다.
관련 문제
- 1. 현재 UIView를 가져 옵니까?
- 2. HttpContext에서 현재 System.Web.UI.Page를 가져 옵니까?
- 3. 현재 클래스의 이름을 가져 옵니까?
- 4. 함수에서 현재 객체를 가져 옵니까?
- 5. 현재 노드 페이지의 호출기 번호를 가져 옵니까?
- 6. VB6에서 현재 윈도우/폼의 hWnd를 가져 옵니까?
- 7. Eclipse : 현재 파일의 위치를 가져 옵니까?
- 8. 소리의 총 시간과 현재 시간을 가져 옵니까?
- 9. iPhone에서 현재 UIScrollView 스크롤 값을 가져 옵니까?
- 10. 현재 사이트에 대한 파일 액세스 만 제한
- 11. Go에서 현재 프로세스 (실행 파일) 이름을 가져 옵니까?
- 12. global.asa에서 현재 실행중인 웹 페이지의 AppFriendlyName을 가져 옵니까?
- 13. iPhone에서 현재 Wi-Fi 액세스 포인트의 IP 주소를 가져 옵니까?
- 14. 현재 화면 중앙에로드 된 이미지의 ID를 가져 옵니까?
- 15. Grails의 모든 국제 문자열을 현재 로케일에서 가져 옵니까?
- 16. 확장 프로그램이 열려있을 때 Chrome의 현재 탭에서 URL을 가져 옵니까?
- 17. 전 처리기 매크로가 현재 클래스의 이름을 가져 옵니까?
- 18. 문자열에서 keyCode를 가져 옵니까?
- 19. URLLoader에서 URL을 가져 옵니까?
- 20. .net, 트랜잭션 객체를 가져 옵니까?
- 21. UIView의 하위보기에서 UINavController를 가져 옵니까?
- 22. 컨트롤러 및 작업에 대한 정규화 된 URL을 가져 옵니까?
- 23. 스크롤보기에서 스크롤 방향을 가져 옵니까?
- 24. DataGrid에서 확인란의 값을 가져 옵니까?
- 25. 두 테이블에서 데이터를 가져 옵니까?
- 26. AssociateColorProfileWithDevice, DeviceName은 어디에서 가져 옵니까?
- 27. iPhone의 카메라 해상도를 가져 옵니까?
- 28. libpcap가 패킷의 복사본을 가져 옵니까?
- 29. .pkg 파일의 버전을 가져 옵니까?
- 30. 조립품에 필요한 조립품을 가져 옵니까?
* 모든 * 세션 목록 또는 로그인 한 세션 목록 만 원하십니까? –
현재 모든 세션에 로그인했습니다. – Septih
모노레일은 ASP.NET을 감싸는 래퍼이므로 일반적인 ASP.NET 포럼 (또는 여기에 ASP.NET에 태그를 달았습니다)에이 질문을 던지려면 완벽한 답변으로 더 많은 사람들이 응답 할 수 있습니다. –