문제

내 프로젝트 중 하나에서 자동 로우 아웃 기능을 구현해야하며 아이디어를 찾아야 할 곳을 찾을 수는 없지만 그래서.

사용자 세션이 만료 된 경우 응용 프로그램이 사용자를 로그인 페이지로 리디렉션하는 것입니다. 이 요구 사항을 해결하기위한 나의 접근 방식에 대해 알려주세요.

문제 설명:사용자가 특정 로그인 인스턴스에서 N 분 이상 시스템을 떠나면 시스템이 자동으로 로그온해야합니다.

도움이 되었습니까?

해결책 2

이것은 다음과 같은 방식으로 달성되었습니다.

1) 서버에 세션 var에 서버에 모든 요청 (서버 및 AJAX를 제외한 서버 및 AJAX)의 시간 스탬프를 저장합니다.

2) AJAX를 사용하여 자주 간격으로 JS 기능을 통해 서버를 설문 조사하고 세션 시간 스탬프와 AJAX 요청 시간이 세션 타임 아웃 VAL보다 더 큰지 확인한 다음 현재 사용자를 로그 오프하고 BOOL을 반환합니다. 그 ajax 요청.

3) BOOL이 반환 된 경우 현재 페이지를 로그인 페이지로 리디렉션하십시오.

다른 팁

질문만큼이나 의견을 말하면, 활동에 관계없이 또는 비활성 기간 직후에 특정 시간 후에 사용자를 로그 아웃 할 내용이 있는지 확실하지 않습니다.

표준을 사용하게되어 기쁘다면 ASP.NET 메커니즘, 이것은 주요 작업없이 당신을 위해 할 수 있습니다.

당신을 설정하십시오 회원 공급자.

당신을 확인하십시오 인증 섹션 loginurl을 정의합니다.

<authentication mode="Forms">
  <forms loginUrl="login.aspx" />
</authentication>

"타임 아웃"속성을 사용하여 기본 30 분 이외의 타임 아웃을 설정할 수 있습니다. 형태 요소:

<authentication mode="Forms">
  <forms loginUrl="login.aspx" timeout="15"/>
</authentication>

이렇게하면 사이트에서 15 분 동안 비활성화 된 후 사용자를 기록합니다 (JavaScript "하트 비트"가없는 브라우저가 열리거나 다른 사이트에서 15 분을 보내는 경우).

익명 사용자에 대한 액세스 거부

<authorization>
  <deny users="?" />
</authorization>

그런 다음 로그인, 등록 및 잊혀진 암호 페이지가 위치 요소 :

<location path="Logon.aspx">
  <system.web>
    <authorization>
      <allow users="?"/>
    </authorization>
  </system.web>
</location>
<location path="Register.aspx">
  <system.web>
    <authorization>
      <allow users="?"/>
    </authorization>
  </system.web>
</location>
<!-- etc -->

이런 식으로, 사용자의 인증 쿠키가 만료되면 양식 페이지의 loginurl 요소에 지정된 URL로 리디렉션됩니다.


표준 ASP.NET 메커니즘을 사용하지 않는 경우 "기본 페이지"유형 모델을 구현하는 것이 좋습니다.

System.web.ui.page에서 상속되는 새 클래스를 작성하여 사용자의 로그인 상태를 확인하고 로그인/시간이 표시되지 않으면 로그인 페이지로 리디렉션하십시오.

system.web.ui.page에서 상속하는 대신 잠금해야 할 페이지에서 기본 페이지 클래스에서 상속됩니다 (각 페이지에서 유사한 설정을 수행하기위한 이런 종류의 설정의 예). 보았습니다 내 대답


로그인 페이지는 iframe에서 다시 뛰어 내리려면 프레임 파열 JS가 필요할 것입니다.

if (top!=self.parent){
  top.location=self.parent.location;
}

아니면 "뒤로"를 눌러 브라우저 캐시를 통해 여전히 페이지를 볼 수 있다고 말하고 있습니까? 이 경우 모든 페이지에서 캐시 헤더와 함께 재생해야합니다.

Response.Cache.SetCacheability(HttpCacheability.NoCache);

자,이 경우 위치를 수행하려면 JS 타이머 개체가 필요합니다. 로그인 페이지에 게시 - 각 페이지의 사용자 컨트롤 (또는 마스터 페이지에서 더 나은)에이를 자동으로 리디렉션하십시오. N 분 후 사용자 :

<script type="text/javascript">
  setTimeout('location.Replace("/login.aspx")', 900000);
</script>

시간은 밀리 초에 이루어 지므로 15 분 안에 이동하며 전체 jQuery 프레임 워크를 제자리에 놓을 필요가 없습니다.

메타 새로 고침 태그를 살펴볼 수도 있습니다.

<meta http-equiv="refresh" content="900;url=http://example.com/login.aspx" />

15 분 후에 브라우저가 로그인 페이지로 새로 고침을 제공합니다 (이것은 몇 초 만에).

어디서부터 시작 해야할지 모르기 때문에이 4Guys 기사가 유용 할 수 있습니다. http://www.4guysfromrolla.com/webtech/110701-1.shtml

편집하다

처럼 들린다 jQuery 타이머 알려진 기간이 경과 한 후 URL로 리디렉션하려면 유용 할 수 있습니다 (예 : 세션 만료 기간).

도움이 되었기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top