2012-07-23 2 views
2

Google 데이터베이스에 액세스하는 데 사용하는 웹 사이트에서 로그 아웃하려면 반드시 사용자가 필요합니다. 로그 아웃하지 않고 브라우저를 닫으면 시스템은 한 시간 동안 사용자 이름을 잠급니다. 나는 그것을 구현하지 않았다, 그것은 단지 그것이 작동하는 방식이다.사용자가 Firefox를 닫지 못하게하십시오

나는 사용자가 로그 아웃했는지 여부를 어떻게 든 감지 할 수있는 간단한 C# 프로그램을 작성하고 그렇지 않은 경우 브라우저를 닫지 못하도록 막았습니다.

1) Firefox API가 있습니까? 아니면 firefox.exe 프로세스에서 웹 사이트 콘텐츠를 읽을 수있는 다른 방법이 있습니까? 사용자 안타 'X'는 브라우저를 닫을 때

2), 그것은 firefox.exe 프로세스의 종료를 중단 할 수 있습니까? (아마도 이것은 거래가 문제입니다).

나는 어떤 힌트를 부탁드립니다. 감사!

+0

사용자 시스템의 모든면을 100 % 제어 할 수 있습니까? 당신이 원하지 않으면 논리적으로 불가능합니다. Firefox가 웹 사이트와 상호 작용하는 방식을 변경 한 다음 시스템 작동 방식을 변경하는 것이 훨씬 쉽습니다. 간단한 해결책은 모든 쿠키가 닫힐 때 모든 쿠키를 삭제하도록 FireFox를 설정하는 것입니다. addtional (도움이되는) 정보를 추가하면 나는 downvote를 제거하는 것을 고려할 것이다. –

+1

사용자가 네트워크에 연결되어 있지 않으면 어떻게 될지 고려하십시오. 브라우저를 닫을 때와 동일한 효과가 있습니까? 귀하가 그러한 연결 해제 (또는 기계 정지와 같은 동등 물)를 어떻게 방지 할 것입니까? – Richard

+0

나는 사용자가 파이어 폭스를 닫지 못하도록 막을 수 있을지 의심 스럽다. 가능한 경우에도 휴리스틱 안티 바이러스/맬웨어 방지 프로그램이 잠재적으로 악의적 인 것으로 간주 할 것이라고 생각합니다. – saluce

답변

10

모든 사용자 세션이 있어야합니다. 만료되도록 세션을 구성 할 수 있습니다. 적절한 session expire event을 처리하기 만하면됩니다.

  • 모두가 그것을 싫어하고, 최신 버전에서 작업 당신이 믿을 수없는 기회, 즉 없습니다 : - 브라우저 종료 이벤트를 처리 할 수있는 해킹에 대한 보지 마세요

    은 위험한 경로입니다 다른 OS에 많은 브라우저를 지원하는 브라우저의 등

  • 이 파이어 폭스 모질라 ( sample)에서 작동 할 수 있지만
  • 응용 프로그램이 OS에 의해 살해 될 수있다 IE 또는 크롬
  • 에서 작동하지 않을 수 있습니다, 그래서 브라우저 이벤트를 할 수있는 기회를 얻을 수 없습니다
  • 화재 및 취급 코드가 작동하지 않음
1

당신은 합법적 인 방법으로 프로그램을 닫는에서 사용자를 막을 수 없습니다. 이것은 명백한 보안 목적을위한 것입니다. 당신이 인증을 사용하는 경우

2

사용자가 코드를 제어 할 수없는 여러 가지 방법을 사용할 수 있기 때문에 사용자가 Firefox를 닫을 수 없습니다. taskmon에서 프로세스를 죽이는). 그러나 코드 (window.onClose() 이벤트)에서 클로저 이벤트를 감지하고 로그 아웃 프로세스를 수행 할 수 있습니다.

그러나, 파이어 폭스 (또는 그 문제에 대한 다른 브라우저)의 경우, 사망됩니다보다는 window.onClose()이 작동하지 않습니다, 폐쇄. 따라서 클라이언트 동작에 의존하지 않고 서버에서 세션을 처리하는 것이 좋습니다. 당신이 할 수있는 일

2

브라우저 폐쇄를 감지하거나 사이트를 떠나 자바 스크립트를 사용하는 경우에 방법을 발사하거나 로그 아웃 Web 서비스에 충돌이다. 매우 빠르고 간단하며 모든 브라우저에서 작동합니다.

0

나는 oleksii에 동의합니다. 하지만 사용자가 Firefox를 종료하는 것이 쉽지 않을 수 있습니다.

현재 "quit-application-requested"옵저버 알림을 수신하고 Firefox가 응용 프로그램을 종료하지 못하도록 aSubject.data를 true로 설정하는 추가 기능을 SDK를 통해 작성하고 있습니다.

observe: function(aSubject, aTopic, aData) { 
    if (aTopic == "quit-application-requested") { 
     aSubject.QueryInterface(Ci.nsISupportsPRBool); 
     aSubject.data = (this.canQuit() == false); 
    } 
    } 

하지만 실제로 원하는 특정 창은 웹 응용 프로그램 (FileMaker 데이터베이스)을 닫지 않기 때문에 닫히지 않습니다.

그러므로 나는 또한과 같이, 모든 명령, 모든 키와 모든 메뉴 (브라우저 XUL)을 비활성화 시도했다 :

var allCommands = win.document.getElementsByTagName("command"); 
for (let i = 0; i < allCommands.length; i++) { 
    allCommands[i].setAttribute("disabled", "true"); 
} 

var allKeys = win.document.getElementsByTagName("key"); 
for (let i = 0; i < allKeys.length; i++) { 
    allKeys[i].setAttribute("disabled", "true"); 
} 

var allMenus = win.document.getElementsByTagName("menu"); 
for (let i = 0; i < allMenus.length; i++) { 
    allMenus[i].setAttribute("disabled", "true"); 
} 

하지만 여전히 응용 프로그램을 종료하고, 따라서 웹 응용 프로그램 창을 닫을 수있는 사용자 내가 새로운 파이어 폭스 창을 열지 않는 한.

그래서 "it"은 작동하지만 여전히 특정 탭이나 탭이있는 창이 닫히지 않도록하고 싶습니다.

사용자가 새 창을 열 때 사용자가 Alt + F4를 누르면 응용 프로그램이 종료되지 않고 창이 닫히기 때문에 새 창을 열지 않아도 작동하지 않습니다. 모든 명령/키/메뉴를 사용할 수 없게 만들었다 고 생각했지만 여전히 일종의 가까운 가능성이 존재합니다.

누구든지 새 창을 열지 않고이를 달성하는 방법에 대한 아이디어가 있습니까?

관련 문제