2011-07-27 4 views
0

유휴 상태 인 경우 사용자가 일정 시간 후에 로그 아웃되도록 메타 데이터를 레이아웃에 설정했습니다.CakePHP - 유휴 상태 인 사용자의 제한 시간 후 자동 로그 아웃

<meta http-equiv="refresh" content="3600;url=http://www.example.com/users/logout/redirect:%2Fusers%2Faccount" /> 

사용자가 로그 아웃 작업이 호출되고 로그인 페이지로 리디렉션 될 때, 그래서 내가, 리디렉션 매개 변수로 현재 URL을 (인코딩)에 합격하기 위해 노력하고있어 볼 수 있듯이, 로그인 페이지가 알 수있는 페이지에서 시스템을 자동으로 로그 아웃 할 때 수행중인 작업으로 사용자를 리디렉션 할 수 있습니다. 자동 로그 아웃이 발생하면

그러나, 예상대로 http://www.example.com/users/logout/redirect:%2Fusers%2Faccount로 리디렉션,하지만 난 404 오류 얻을 :

/사용자/로그 아웃/리디렉션 :/사용자/계정를 찾을 수 없습니다

을 여기서 내가 뭘 잘못하고 있니?

+2

바퀴를 개혁하고 그 이유는 무엇입니까? 'core.php' 안에서'Session.timeout'에 유휴 시간을 설정하고, Auth 컴포넌트를 사용하여 로그인 리다이렉션을 관리하십시오. 레이아웃에 메타가 필요 없다. – pleasedontbelong

+0

나는 Session.timeout을 알지 못했다. 이제 사용자가 있던 페이지로 재전송 할 수있는 Auth를 어디에서 얻을 수 있습니까? – BadHorsie

답변

2

내 생각에 최소한이 점은 urlencode을 사용하여 Cake가 어떻게 슬래시를 번역하고 처리 할 수 ​​있는지를 이해하는 것이 불가능하다는 것입니다. 나는 구체적인 것에 관해 확실하지 않다!

한 가지 해결책은 URL 대신 base64_encodebase64_decode을 사용하는 것입니다.

regex과 함께 경로를 설정하여 여분의 슬래시를 올바르게 처리 할 수 ​​있습니다.

echo 'http://example.com/users/logout/redirect:' . base64_encode('users/account'); 
//http://example.com/users/logout/redirect:dXNlcnMvYWNjb3VudA== 
+0

감사합니다. 어쨌든 base64를 사용하려고 생각했기 때문에 로그인 양식에도 사용자 이름을 전달할 수 있으며 자동 입력란을 채울 수 있습니다. – BadHorsie

1

코어 파일에서 시간 초과를 설정할 수 있습니다.

당신이 app_controller에

$this->Auth->autoRedirect = true; 

를 추가 할 필요가 로그인 후 리디렉션합니다. (preparing to add authAuthComponent Class 참조)

인증 구성 요소는 보려는 페이지가 제어됨을 나타냅니다. 따라서 로그인 페이지를 렌더링하면 페이지의 URL이 세션에 저장됩니다.

0

이의 더 쉽게 만들어 보자 행운을 빕니다) 는 로그인보기에서 print_r($_SESSION)을 할 수있는, 그것을 테스트하려면 당신은 $_SESSION['Auth']['redirect']

아래에 표시됩니다 그리고는 =입니다. 나는 Cake 3.2를 사용하지만 이전 버전이 같다고 생각한다.

경로 정보를 구성하십시오. 케이크 3.2

$routes->connect('/logout', ['controller' => 'Users', 'action' => 'logout']); 

/config/routes.php

에에서 이제 URL http://domain.com/logout 대신 http://domain.com/Users/logout에 접근하여 로그 아웃됩니다. 당신의 메타 태그에

자료 :

<meta http-equiv="refresh" content="3600;/logout" /> 

그것은 나를 위해 일한, 그것을 시도 : D

관련 문제