2009-05-25 5 views
2

첫 번째 FireFox 확장 프로그램을 작성 중이며 몇 가지 질문이 있습니다. 어쩌면 누군가가 도울 수 있습니다.페이지가 닫힌 후 사용자를 로그 아웃 할 수있는 Firefox 확장자

나는 로그인이 필요한 웹 사이트가 있습니다. 로그인은 로그인 유형별로 한 명의 사용자입니다. 따라서 한 PC에서 사용자 이름 "tom"으로 로그인하고 다른 PC로 이동하여 동일한 세부 정보로 로그인하려고하면 실패합니다. 내 인증 된 페이지에서 로그 아웃 버튼을 클릭하면 새 위치에서 PHP 함수를 실행하여 사용자를 로그 아웃합니다 (MySQL의 "기록 된"상태를 업데이트합니다). 문제는 사용자가 업무용 책상에 로그인하여 페이지를 서핑하면 갑자기 친구가 전화를 걸어 휴식 시간에 점심을 먹고 짧은 시간에 만나야한다는 것입니다.) 버튼을 누르십시오. 로그 아웃 버튼을 눌러 로그 상태가 여전히 1이되도록 잊어 버리십시오. 나중에 가정에서 페이지에 다시 액세스하려면 로그인 할 수 없습니다.

그래서, 어떻게 든 파이어 폭스에서 "닫기"이벤트를 가져와야합니다. "website.com"도메인 만 포함하는 제품을 찾고자합니다. 그런 다음 탭이 닫히거나 Firefox의 기본 창이 닫히면 고유 키를 보내고 사용자를 로그 아웃 한 해당 URL의 사용자 이름과 문제가 해결 될 수 있습니다. 이것이 가능한지 나는 모른다. 이 확장 기능을 구현하기위한 아이디어 (가능한 경우 코드)를 게시하십시오.

감사합니다.

+0

firefox가 충돌한다고 가정 해보십시오! 이 사건을 어떻게 잡아 두시겠습니까? – gath

+0

이것은 이미 다루어지고 우리에게 연락하는 특별한 상황으로 간주됩니다. 하루에 최대 3 개의 탭을 사용하여 충돌 가능성을 낮 춥니 다. 그러나 그것은 중요한 것이 아닙니다. –

답변

3

의도적으로 잘못되었습니다.

사용자 PC가 고장난 경우 (하드 디스크 오류, 정전) 플러그인에서 사용자를 로그 아웃 할 수 없습니다. 따라서 사용자는 어떤 PC에도 로그인 할 수 없습니다. 의는 전제를 다시 보자

,

을 -

. 왜 다른 PC에서 로그인해야합니까?

b. 사용자가 다른 PC에 로그인 할 때 이전 PC에서 로그인을 무효화하는 방법 (로그 아웃)은 어떻습니까? 이것은 Yahoo!와 같은 채팅 응용 프로그램과 같은 종류입니다. 메신저 작업. 강제로 다른 사용자를 로그 아웃

  • 로그인 취소 : 사용자가 다른 PC에 로그인 한 경우, 경고 및 옵션을 사용자에게 제공 : 답변에서

    , 여기에 내가 제안 무엇 로그인을 진행하십시오.

+0

또한 특정 시간이 지나면 로그인이 만료되거나 일정 시간 동안 사용하지 않으면 로그인이 만료된다는 것을 추가합니다. –

+0

a. 각 사용자 이름이 하나의 임시 테이블에 여러 테이블에서 수집 된 콘텐츠를 생성하기 때문입니다. 2 명의 사용자가 로그인 한 경우 한 사용자는 무언가를 생성하고 다른 사용자는 다른 무언가를 생성하므로 결과를 볼 필요가있을 때 각 사용자는 서로 선택 결과를 보게되므로 잘못되었습니다. b. 한 사용자가 5 분 동안 메시지를 작성하고있는 동안 두 번째 사용자가 로그인하면 첫 번째 사용자는 데이터베이스에 = 0으로 기록됩니다. 새 사용자는 행복하게 검색하고, 첫 번째 사용자는 "메시지 보내기"를 클릭하고 "로그인하지 않았습니다"라는 오류 메시지를 표시합니다. 나올거야. –

+0

추가 정보 : 그것은 회사를위한 것입니다. 각 부서에는 사용자 이름이 있습니다. 각 직원은 한 번에 하나씩 사용할 수 있습니다. 감사. –

1

일정 시간 동안 사용하지 않으면 사용자 브라우저가 (응용 프로그램 또는 웹) 서버의 책임이되며 클라이언트 브라우저가 아닌 경우에만 사용자를 로그 아웃하십시오. 이를 세션 시간 초과라고합니다.

설명대로 브라우저 구현에서 시간 초과를 피할 수는 있지만 기본 솔루션이 아니어야합니다.

취할 수있는 접근법은 다음과 같습니다.
'잠금'상태가 저장되어있는 테이블에 타임 스탬프를 포함시킵니다. 사용자가 타임 스탬프가 업데이트되는 작업을 수행 할 때마다 광고에 다시 로그인하려고하면 로그인 코드가 특정 임계 값 (예 : 15 분)으로 이전 사용자를 자동으로 로그 아웃해야하는 시간 기록이 오래 걸립니다.

+0

예.하지만 사용자가 기사를 읽는 데 30 분이 걸릴 수 있으며 읽는 동안 다른 사용자가 로그 오프하게됩니다. –

+0

사용자 세션/로그인은 분명히 부족한 자원입니다. 사용자가이를 ("30 분 동안 기사 읽기") 비 효과적으로 차단하도록 허용하면 각 부서마다 하나씩이 아니라 개별 로그가 기록됩니다. – lexu

+0

Patrick Gryciuk 솔루션이 좋아 보인다! 타임 스탬프를 새로 고치기 위해 1-2 분마다 핑 (ping)을하면 브라우저가 열려있는 동안 세션이 열린 상태로 유지되지만 사용자가 브라우저를 닫거나 컴퓨터를 최대 절전 모드로 전환하면 세션이 닫힙니다.사용자가 자신의 Windows 세션 (windowkey + L)을 잠그면 어떤 일이 일어날 지 확신하지 못합니다. 브라우저가 아직 새로 고침을합니까? – lexu

1

사이트의 페이지를 ping하는 ajax를 사용할 수 있습니다. 모든 세션 정보가 전달되고 사용자는 여전히 활성 브라우저/페이지가 있는지 확인할 수 있습니다. Firefox가 다운되면 웹 사이트를 더 이상 ping 할 수 없으며 세션이 15 분 후에 시간 초과 될 수 있습니다. 다른 로그인시 강제 로그 아웃을 허용하는 것이 가장 좋을 것이라고 생각합니다. 보통 하루 종일 작업을 끝내고 나면 모든 프로그램이나 로그 아웃 또는 아무 것도 닫지 않을 것입니다. 누군가가 컴퓨터를 사용하지 못하도록 컴퓨터를 잠그십시오. 다음날 아침 나는 내 모든 프로그램을 계속 실행하여 내가 중단했던 곳에서 계속할 수있다.

BTW, Yahoo 웹 메신저는 아마도 세션 기반 쿠키의 일부 형태를 사용합니다. 즉, 쿠키는 메모리에 저장되고 탭이나 브라우저가 닫힐 때 사라집니다.

+0

흠 ... 자바는 어때? 내 페이지에서 서블릿을 사용하여 창 닫기 액션을 잡아 내 서버의 PHP 파일에 값을 게시 할 수 있다고 생각하십니까? 감사. –

+0

서블릿은 서버 측이며 PHP 또는 CGI와 동일합니다. 애플릿은 클라이언트 측이며 서명 된 애플릿 (운영 체제 고유의 기능도 포함)을 사용하여 거의 모든 작업을 수행 할 수 있습니다. 그러나 IMO는 가장 쉬운 해결책입니다 (한 명 이상의 사용자가 로그인 할 수 없거나 강제 로그 아웃)은 ajax를 사용하여 서버를 핑 (ping)하고 잠시 후 세션 시간 제한을 갖습니다. –

+0

그래,하지만 서버에 더 많은로드가 생성되지 않습니까? 내말은 몇 초 동안해야 돼? –

1

닫혀있는 탭에 대한 알림을 받으려면 this sample code과 같은 작업을 수행해야합니다. 그러나로드를 청취하는 대신 언로드를 청취하고 싶을 것입니다.

언로드에 대한 알림을 받으면 웹 응용 프로그램처럼 로그 아웃 페이지에 대한 요청을 수행해야합니다. 언로드되는 문서의 위치를 ​​확인하려면 aEvent.originalTarget.location.href을 확인하십시오. aEvent.originalTarget은 닫는 탭의 document 개체를 제공합니다. 그런 다음 이벤트 처리기에서 XLMHttpRequest를 사용하려고합니다.

0

다른 컴퓨터에서 다시 로그인하기 만하면됩니다. 그리고 첫 번째 컴퓨터에서 사용자로부터 요청을 받으면 다시 로그인하도록 요청하십시오. 따라서 한 번에 한 명의 사용자 만 로그인 할 수 있습니다.

+0

농담 해? –

+0

아니, 왜? 이것을하기위한 문제는 무엇입니까? – Kamarey

+0

그들은 서로 계속 로그 아웃 할 것입니다 ... 예, 한 번에 한 명의 사용자 만 로그 하나 어느 누구도 일하기가 편할 수 없습니다. –

관련 문제