대부분의 경우 사용자가 응용 프로그램에 적극적으로 참여하거나 일시적으로 비활성화되는지에 대해 신경 쓰지 않습니다. 비활성, 즉, 아마도 그들은 물을 마시기 위해 일어 났을 것입니다. 그러나 사용자 활동을 추적하고 비활성을 감지 할 때 상황이 있습니다.
그 기능이 필요할 때 몇 가지 예를 생각해 봅시다.
- 기사 읽기 시간 추적
- 자동 저장 양식 또는 문서
- 자동 일시 정지 게임
- 비디오 플레이어 컨트롤을 숨기고 있습니다
- 보안상의 이유로 사용자를 자동 로그 아웃합니다
최근에 보안상의 이유로 비활성 사용자를 자동 으로그인 한 마지막 예제와 관련된 기능을 만났습니다.
자동 로그 아웃에 관심을 가져야하는 이유는 무엇입니까?
많은 응용 프로그램은 사용자에게 어느 정도의 개인 데이터에 액세스 할 수 있도록합니다. 응용 프로그램의 목적에 따라 해당 데이터의 금액과 값이 다를 수 있습니다. 사용자 이름 일 수도 있지만 의료 기록, 재무 기록 등과 같이 더 민감한 데이터 일 수도 있습니다.
일부 사용자는 로그 아웃하고 세션을 열어 두는 것을 잊을 가능성이 있습니다. 당신에게 몇 번이나 일어 났습니까? 아마도 휴대 전화가 갑자기 울리거나 즉시 떠나야 할 필요가 있습니다. 다른 사람이 해당 세션을 사용하여 민감한 데이터를 추출 할 수 있으므로 사용자 세션을 열어 두는 것은 위험합니다.
이 문제와 싸우는 한 가지 방법은 사용자가 특정 기간 내에 앱과 상호 작용 한 경우 추적을 한 다음 해당 시간을 초과하면 로그 아웃을 트리거합니다. 팝 오버 또는 사용자에게 로그 아웃이 발생한다고 경고하는 타이머를 보여줄 수 있습니다. 또는 비활성 사용자가 감지 될 때 즉시 로그 아웃 할 수 있습니다.
한 레벨을 낮추면 우리가하고 싶은 것은 사용자의 마지막 상호 작용에서 전달 된 시간을 계산하는 것입니다. 그 기간이 임계 값보다 길면 비 활동 핸들러를 발사하고자합니다. 사용자가 임계 값을 위반하기 전에 작업을 수행하면 카운터를 재설정하고 다시 계산을 시작합니다.
이 기사는이 예제를 기반으로 이러한 활동 추적 로직을 구현할 수있는 방법을 보여줍니다.
1 단계 : 추적 로직 구현
두 가지 기능을 구현합시다. 첫 번째는 사용자가 앱과 상호 작용할 때마다 타이머를 재설정하고, 두 번째는 사용자가 비활성화 될 때 상황을 처리합니다.
- ResetUserActivityTimeout - 사용자가 응용 프로그램과 상호 작용할 때마다 기존 시간 초과를 지우고 새 시간을 시작하는 메소드가됩니다.
- inactiveUserAction - 사용자 활동 시간 초과가 다 떨어질 때 발사되는 방법이됩니다.
userActivityTimeout = NULL을 두십시오. 함수 resetuserActivityTimeout () { Cleartimeout (userActivityTimeout); userActivityTimeout = settimeout (() => { inactiveUserAction (); }, inactive_user_time_threshold); } function inactiveUserAction () { // 로그 아웃 로직 }
좋아, 그래서 우리는 활동을 추적하는 방법이 있지만 아직 어느 곳에서나 사용하지 않습니다.
2 단계 : 추적 활성화
이제 추적 활성화를 담당하는 메소드를 구현해야합니다. 이러한 방법에서는 이벤트가 감지 될 때 ResetuserActivityTimeout 방법을 호출하는 이벤트 리스너를 추가합니다. 원하는만큼 많은 이벤트를들을 수 있지만 단순화를 위해이 목록을 가장 일반적인 몇 가지로 제한합니다.
함수 activateActivityTracker () { window.addeventListener ( "MouseMove", ResetUserActivityTimeout); window.addeventListener ( "스크롤", ResetUserActivityTimeout); window.addeventListener ( "keydown", ResetUserActivityTimeout); window.addeventListener ( "Resize", ResetUserActivityTimeout); }
그게 다야. 사용자 추적이 준비되었습니다. 우리가해야 할 유일한 일은 페이지로드에서 activateactivityTracker를 호출하는 것입니다.
우리는 이것을 떠날 수 있지만, 자세히 살펴보면 방금 저지른 코드에 심각한 성능 문제가 있습니다. 사용자가 앱과 상호 작용할 때마다 전체 논리가 실행됩니다. 그것은 좋지만 더 자세히보십시오. 추적이 필요하지 않더라도 사용자가 페이지와 상호 작용할 때 엄청난 시간을 해고하는 일부 유형의 이벤트가 있습니다. MouseMove 이벤트를 살펴 보겠습니다. 마우스를 만지더라도 만지면 MouseMove 이벤트는 수십 번 발사됩니다. 이것은 진정한 성능 킬러입니다. 지정된 기간 당 사용자 활동 논리를 한 번만 해고 될 수있는 스로틀을 도입하여 해당 문제를 처리 할 수 있습니다.
지금 그렇게합시다.
3 단계 : 성능 향상
먼저, 우리는 스로틀 러 타임 아웃을 참조 할 수있는 하나 이상의 변수를 추가해야합니다.
useractivitythrottlertimeout = null로 둡니다
그런 다음 스로틀 러를 만들 수있는 메소드를 만듭니다. 이 방법에서는 스로틀 러 타임 아웃이 이미 존재하는지 확인하고 그렇지 않은 경우 특정 기간 후에 ResetuserActivityTimeout을 발사 할 수있는 것을 만듭니다. 이것이 모든 사용자 활동이 추적 로직을 다시 트리거하지 않는 기간입니다. 그 후 Throttler 타임 아웃이 지워지면 다음 상호 작용이 활동 추적기를 재설정 할 수 있습니다.
userActivitythrottler () { if (! useractivitythrottlertimeout) { userActivitythrottLertimeout = settimeout (() => { ResetUserActivityTimeout (); Cleartimeout (userActivitythrottLertimeout); useractivitythrottlertimeout = null; }, user_activity_throttler_time); } }
방금 사용자 상호 작용에 대해 발사 해야하는 새로운 방법을 만들었으므로 활성화 로직에서 이벤트 핸들러를 ResetUserActivityTimeout에서 UserActivityThrottler로 변경해야합니다.
ActiveActivityTracker () { window.addeventListener ( "MousEmove", UserActivityThrottler); // ... }
보너스 : 다시 봅시다!
이제 활동 추적 로직을 구현 했으므로 해당 논리를 VUE를 사용한 응용 프로그램 빌드로 어떻게 이동할 수 있는지 보겠습니다. 우리는이 예제에 대한 설명을 기반으로 할 것입니다.
먼저 모든 변수를 구성 요소의 데이터로 옮겨야합니다. 즉, 모든 반응성 소품이 살고있는 곳입니다.
내보내기 기본값 { 데이터 () { 반품 { Isinactive : False, useractivitythrottlertimeout : null, UserActivityTimeout : NULL }; }, // ...
그런 다음 모든 기능을 메소드로 옮깁니다.
// ... 방법 : { ActiveActivityTracker () {...}, ResetUserActivityTimeout () {...}, useractivitythrottler () {...}, inactiveUserAction () {...} }, // ...
우리는 VUE를 사용하고 있으며 반응 시스템이므로 모든 직접 DOM 조작 i. (예 : Document.GetElementById ( "App"). InnerHtml)를 삭제하고 비활성 데이터 속성에 의존 할 수 있습니다. 아래와 같이 구성 요소의 템플릿에서 데이터 속성에 직접 액세스 할 수 있습니다.
<emplate> <div> <p> 사용자는 비활성입니다 = {{isinactive}} </p> </div> 템플릿></emplate>
마지막으로해야 할 일은 추적 로직을 활성화 할 적절한 장소를 찾는 것입니다. Vue에는 컴포넌트 라이프 사이클 후크가 포함되어 있으며 정확히 우리가 필요로하는 것, 특히 BeforeMount 후크입니다. 그러니 거기에 넣자.
// ... beforemount () { this.activateActivityTracker (); }, // ...
우리가 할 수있는 일이 더 있습니다. Window에서 타임 아웃 및 등록 이벤트 리스너를 사용하고 있기 때문에 항상 우리 자신을 약간 정리하는 것이 좋습니다. 우리는 또 다른 수명주기 후크 인 BeforeDestroy에서 그렇게 할 수 있습니다. 우리가 등록한 모든 청취자를 제거하고 구성 요소의 수명주기가 끝날 때 모든 시간 초과를 지우겠습니다.
// ... beforedestroy () { Window.removeEventListener ( "MousEmove", this.useractivitythrottler); window.removeEventListener ( "스크롤", this.userActivitythrottler); window.removeEventListener ( "keydown", this.useractivitythrottler); window.removeeventListener ( "resize", this.useractivitythrottler); ClearTimeout (this.userActivityTimeout); Cleartimeout (this.useractivitythrottlertimeout); } // ...
그것은 랩입니다!
이 예제는 순전히 응용 프로그램과의 사용자 상호 작용을 감지하고 응용 프로그램에 반응하고 특정 기간 내에 상호 작용이 감지되지 않을 때 방법을 발사하는 데 집중합니다. 나는이 예제가 가능한 한 보편적이기를 원했기 때문에 비활성 사용자가 당신에게 감지했을 때 일어날 일의 구현을 떠난 이유입니다.
이 솔루션이 프로젝트에 유용하다는 것을 알게되기를 바랍니다!
위 내용은 비활성 사용자 감지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이번 주에 Roundup : Firefox는 Locksmith-Like Powers를 얻는 Samsung '의 Galaxy Store가 프로그레시브 웹 앱을 지원하기 시작하고 CSS Subgrid는 Firefox에서 배송됩니다.

이번 주에 Roundup : Internet Explorer는 Edge로가는 길을 찾고 Google 검색 콘솔은 새로운 속도 보고서를 선전하고 Firefox는 Facebook의 알림을 제공합니다.

당신은 아마도 이미 CSS 변수에 익숙 할 것입니다. 그렇지 않다면 여기 2 초 개요가 있습니다. 실제로 사용자 정의 속성이라고합니다.

웹 사이트 구축은 프로그래밍입니다. HTML 및 CSS 작성은 프로그래밍입니다. 나는 프로그래머이며, 여기에 CSS- 트릭을 읽는다면, 당신은 ' re a입니다.

여기에 내가 당신이 선불 아는 것을 좋아하는 것 : 이것은 어려운 문제입니다. 당신이 여기에 착륙 한 경우, 당신은 당신이 말할 수있는 도구를 가리키기를 희망하기 때문에 여기에 착륙했다면

Picturein-Picture는 2016 년 Macos Sierra의 출시와 함께 Safari 브라우저에서 웹에서 처음으로 등장했습니다. 사용자가 팝 팝이 가능했습니다.

개츠비는 훌륭한 작업 처리 및 처리 이미지를 수행합니다. 예를 들어, 수동으로 이미지 최적화로 시간을 절약 할 수 있습니다.

나는 오늘 비율 기반 (%) 패딩에 대해 내 머리에 완전히 잘못되었다고 배웠습니다! 나는 항상 백분율 패딩이


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
