2013-08-31 3 views
0

동일한 사용자 이름과 비밀번호를 동시에 사용하여 다중 로그인을 방지해야하는 웹 응용 프로그램을 개발 중입니다.동일한 로그인 자격 증명으로 여러 로그인 방지

동일한 시스템에서 발생하는 경우 사용자 세션을 통해 무언가를해야하지만 동일한 사용자 이름과 비밀번호를 사용하는 다른 시스템에 로그인하는 것을 방지해야합니다. 내가 DB에서 기계의 사용자 세션 자격 증명 및하여 IPAddress를 저장해야

1) - :

는 가장 좋은 방법이 될 수있는 것.

2) 우리는 응용 프로그램 자체에서 세션 추적 메커니즘을 사용해야합니다. 그렇다면 최상의 접근 방법은 무엇입니까?

또한, 우리는 염두에두고 다음 사항을 유지해야한다 : 사용자가 로그 아웃하지 않고 브라우저를 닫을

1)합니다.

2) 세션 시간이 초과되었습니다.

질문을 지울 수 있기를 바랍니다.

답변

0

사용자가 로그인했는지 여부에 따라 각 사용자의 온라인 또는 오프라인 텍스트가있는 필드를 데이터베이스에 가지고 있으면됩니다. 그래서 누군가가 그 사용자 이름으로 로그인을 시도 할 때 제출시 해당 사용자에 대해 해당 필드가 온라인이라고 표시하면 데이터베이스를 확인하십시오. 필드가 온라인으로 표시되면 로그인을 허용하지 마십시오. 그렇지 않으면 허용하십시오. 사용자가 (서버가 broguth는 DB를 업데이트하지 않고 다운되면 실패 할 수있는)

$check= "onlineCheck.txt"; 
$fh = fopen($check, 'a') or die("can't open file"); 
$nowOnline= "USER678 \n"; 
fwrite($fh, $nowOnline); 
+0

응용 프로그램 자체에서이를 추적하는 방법이 있습니다. –

+0

기본적으로 당신이 말한 것은 당신이 데이터베이스를 사용하지 않는 것을 선호한다는 것입니다. – roasstbeef

+0

DB를 사용하지 않고 웹 응용 프로그램 자체에서이 작업을 수행하려고합니다. –

0

Besdies 데이터베이스 안타 텍스트 파일의 온라인 여부를 저장할 수있는 데이터베이스 를 사용하지 않고

하십시오 데이터베이스 친화적 인 방법은 모든 다시 로그인 할 때 데이터베이스를 공격하지 않는 것이거나 당신이 dowm하는 서비스 거부 공격을받을 수 있습니다. 대신 J2EE에 세션 리스너를 구현하고 동일한 사용자가 캐시의 사용자 아이디를 조회하여 로그인했는지 확인하십시오.

두 개 이상의 응용 프로그램 노드가있는 경우 web.xml에서 세션 시간 초과와 동일한 시간 제한을 갖는 분산 캐시가 필요합니다.

+0

감사합니다. @tgkprog, 어떤 유형의 서블릿 목록자가이 추적에 가장 적합할까요? –

+0

'Session Listener'내가 생각하기에 인터페이스를 구현해야합니다. 밖으로 상자/프리웨어 모르겠다. 하지만 구글에서 찾을 수있다. – tgkprog

관련 문제