2012-09-11 3 views
0

젠드 프레임 워크를 사용하고 있습니다. 간단한 로그인 화면을 만들었습니다. 사용자가 로그인하면 세션을 설정 한 다음 멤버 영역 컨트롤러의 init 함수에서 세션을 확인하고 액세스 권한을 부여하고, 그렇지 않으면 로그인 화면으로 리디렉션하려고합니다.다른 컨트롤러에서 세션 적용 및 호출

내 로그인 컨트롤러과 같이,이 사용자 이름과 암호를 확인 설정하고 세션을 설정 한 :

if (isset($_POST['loginSubmit']) && $form->isValid($_POST)){ 
      $inputtedUsername = $_POST['username']; 
      $inputtedPassword = $_POST['password']; 
      if ($inputtedUsername == $username && $inputtedPassword == $password) { 
       $loggedIn = new Zend_Session_Namespace('loggedIn'); 
       $loggedIn->success; 
       $this->_forward('index', 'home'); 
      } else { 
       echo 'invalid'; 
      } 
     } 

내가 그렇게 볼 수 있어야 사용자 만 로그인 홈 컨트롤러를 가지고를 내가 가진 innit 함수 : $ loggedIn = new Zend_Session_Namespace ('loggedIn');

if (isset($loggedIn->success)) { 
      echo 'success'; 
     }else{ 
      $url = $this->view->url(array(
       'controller' => 'index', 
       'action' => 'index')); 
      header('Location:' . $url); 
     } 
    } 

내가 올바른 자격 증명을 사용하여 로그인

, 그것은 다른 기능에 명시된대로 화면을 로그인 나를 리디렉션합니다.

무엇이 잘못 되었나요?

답변

2

먼저 Zend_Session_Namespace의 사용이 (네임 스페이스에 값을 할당되지 않음) 불완전 :

$loggedIn = new Zend_Session_Namespace('loggedIn');//here you created a namespace 
$loggedIn->success;//here you created a key in that namespace with no value 

코드가 true 반환 $loggedIn->success에 할당 된 값을 구성 할 것으로 보인다 방법은, 그래서 아마 시도 : 이 현재의 문제를 해결할 수도 있지만

$loggedIn = new Zend_Session_Namespace('loggedIn');//here you created a namespace 
$loggedIn->success = true; 

, 나는 당신이 정말로 인증 및 권한 부여에 도움이 할 수있는 두 젠드 구성 요소를 살펴 제안하고 싶다.

첫 번째는 Zend_Auth으로, 응용 프로그램 인증을 처리하고 사용자 세션 지속성을 처리하는 데 도움이되는 구성 요소입니다. Rob Allen has a tutorial을 시작하면 도움이됩니다.

둘째는 Zend_Acl입니다. 액세스 제어 목록 구성 요소는 권한 부여를 처리하며 누가 액세스 권한이 있는지를 나타냅니다. A place to start with Zend_Acl

+0

질문자에게 올바른 리소스를 알리는 데 +1 :) – Karma

관련 문제