2009-06-21 3 views
0

가 나는 다음과 같은 세부 사항에 따라 로그인에 대한 사용자를 제한해야하는 시나리오가 : 500 사용자가 내 웹 사이트에 로그인을 시도 할 때마다사용자를 로그인으로 제한하는 방법은 무엇입니까?

"사용자 로그인을 초과하는 메시지가있을 것를, 나중에 로그인하시기 바랍니다! ".

한 번에 499 명의 사용자 만 로그인 할 수 있으며, 500 번째 사용자는 Admin입니다. 또한 관리자 페이지 뷰에서 온라인 사용자를 표시해야합니다. 그럼, 어떻게 500

개까지 aps.net에 관련된 답변을 제공하세요 번호를 로그인 사용자를 계산하고 제한하는 C#

+1

여기에 global.asax가 태그로 포함되어 있으므로 Session_Start 및 Session_End에 대해 잘 알고있을 수 있습니다. 이러한 이벤트를 사용하여 구현하기에 너무 어렵지 않아야합니다. 좀 더 자세한 정보를 제공해 주시겠습니까? – Kobi

+0

하지만 사용자가 브라우저를 닫을 때마다 Session_End 이벤트가 발생하지 않습니다. –

+0

세션 시간 초과 후 Session_End가 실행되지 않습니까? 필요한 경우 몇 분으로 설정할 수 있으며 기본값은 20 분입니다. 여전히 사용자 수를 추적하여 추적 할 수 있습니다. – Kobi

답변

0
가 저장됩니다, 그래서 당신은 세션의 동작을 변경하여이 작업을 수행 할 것 PHP에서

DB에. 그렇게하면 얼마나 많은 사람들이 로그온했는지를 대략적으로 파악할 수 있습니다.

ASP에서이를 수행 할 수있는 방법이 있다고 가정합니다.

0

좋은 RDBMS (그리고 좋은 네트워킹)를 가지고 있다면 테이블에 정보를 등록 할 수 있습니다 ... 그러나 비싸면 서버 측 기술 (세션, 응용 프로그램 등)에 제공된 일부 클래스를 사용하십시오.).

JS로는 불가능합니다. 어디에서 그 정보를 세계적으로 저장 했습니까 (카운터 변수)?

클라이언트가 서버에 연결할 때마다 모든 JS 코드가 다시로드되므로 해당 정보를 저장할 방법이 없습니다.

또한 쿠키를 사용하려면 쿠키가 사용되는 클라이언트에만 해당된다는 것을 기억하십시오.

0

여러 가지 방법이 있습니다.

DB의 세션은 한 가지 방법입니다. 그래도 익명 사용자가 사이트에 얼마나 있는지 알 수 있습니다.

찾고있는 작업을 수행하는 또 다른 방법은 "logged_in"이라는 새 필드에서 사용자 테이블의 사용자를 신고하는 것입니다.

login 메소드가 실행되면 logout 메소드와 마찬가지로 플래그가 적절하게 수정됩니다. 그런 다음 사용자가 현재 로그인 한 수를 확인하기 위해 로그인 할 때마다 SELECT 쿼리를 실행하여 그에 따라 작동합니다.

더 나은 방법은 "로그인"또는 "로그 아웃"방법에 따라 더하고 더한 총 로그인 사용자 수를 DB에 저장하는 것입니다. 이렇게하면 특정 순간에 어떤 특정 사용자가 로그인했는지 알 수 없지만 적어도 필요한 전체 숫자를 갖게됩니다. 이 방법은 전체 사용자 테이블에서 SELECT 쿼리를 실행할 필요가 없기 때문에 더 좋습니다. DB에서 특정 필드 값을 가져 와서 성능을 향상시킬 수 있습니다. 불행하게도 매번 로그 아웃하지 않으면 로그인 시간을 저장하고 일정 시간 후에 로그 아웃하지 않는 한이 방법은 유용하지 않습니다.

사용자가 "로그 아웃"하지 않고 브라우저를 닫을 수있는 문제를 해결하려면 위에 제안한 DB 구조의 조합으로 세션을 저장하고 싶을 수 있습니다.

+0

익명 사용자 수는 계산할 수 없습니다. 또한 사용자가 로그 아웃 링크를 누르지 않고 브라우저를 닫는 시나리오에서는 무엇이 있습니까? 그런 사용자를 어떻게 생각합니까? –

+0

익명 사용자 수는 계산되지 않습니다? 그러면 익명의 장바구니는 어떻게 작동하는지 알 수 있습니까? – Sev

+0

로그 아웃하지 않고 브라우저를 닫는 사용자를 다루는 방법을 포함하도록 내 게시물을 편집했습니다. – Sev

0

asp.net에서 global.asax이라는 파일을 추가 할 수 있습니다. 이 파일에는 Session_StartSession_End을 비롯한 응용 프로그램 수준 이벤트가 있습니다. 이렇게하면 데이터베이스를 사용하는 경우 세션을 쉽게 추적 할 수 있습니다.

0

데이터베이스에 현재 로그인 한 사용자를 추적해야합니다. Sev은이를 수행하는 방법에 대한 좋은 아이디어를 제공합니다. 그러나 그의 답변에 대한 언급에서 언급했듯이 '로그 아웃'버튼을 클릭하면 로그 아웃 한 사용자로 표시 할 수 없습니다. 많은 사용자가 로그 아웃하지 않고 웹 페이지를 닫을뿐입니다.

그래서 사용자가 활동하지 않아도 몇 초 후에 세션을 자동으로 실행하는 세션 관리가 필요합니다.

내 온라인 뱅킹 소프트웨어에서 이것은 amazon.com에서 90 또는 120 초 (높은 보안)와 비슷하지만 적어도 몇 시간 (더 나은 맞춤형 경험)입니다. 이 시간 제한을 설정하는 기간은 응용 프로그램의 필수 요구 사항에 따라 다릅니다.

어쨌든, 이것은 다소 일반적인 문제이므로 이미이 기능을 구현 한 몇 가지 프레임 워크가 있어야합니다.

2

응용 프로그램 컨텍스트 처리에 적합하다고 생각합니다.

데이터베이스에 연결하기 위해 리소스가 낭비되기 때문에 MS SQL에 저장하지 마십시오.

가장 간단한 방법은 온라인 사용자 수에 대한 데이터를 유지하기 위해 싱글 톤 개체를 만드는 것입니다. 이 개체는 Application_Start 이벤트에서 인스턴스화 될 수 있습니다.

로그인 작업이 발생할 때마다 개체를 잠그고 현재 사용자 수를 뺀 다음 잠금을 해제하십시오.

관련 문제