ASP.NET : 자동 로그 아웃 기능 구현
-
22-08-2019 - |
문제
내 프로젝트 중 하나에서 자동 로우 아웃 기능을 구현해야하며 아이디어를 찾아야 할 곳을 찾을 수는 없지만 그래서.
사용자 세션이 만료 된 경우 응용 프로그램이 사용자를 로그인 페이지로 리디렉션하는 것입니다. 이 요구 사항을 해결하기위한 나의 접근 방식에 대해 알려주세요.
문제 설명:사용자가 특정 로그인 인스턴스에서 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 분 후에 브라우저가 로그인 페이지로 새로 고침을 제공합니다 (이것은 몇 초 만에).
MSDN 문서를 읽으십시오 http://msdn.microsoft.com/en-us/library/ms972429.aspx
어디서부터 시작 해야할지 모르기 때문에이 4Guys 기사가 유용 할 수 있습니다. http://www.4guysfromrolla.com/webtech/110701-1.shtml
편집하다
처럼 들린다 jQuery 타이머 알려진 기간이 경과 한 후 URL로 리디렉션하려면 유용 할 수 있습니다 (예 : 세션 만료 기간).
도움이 되었기를 바랍니다.