2013-07-03 2 views
3

저는 현재 구축중인 Yii 응용 프로그램에 대한 인증을 설정하려고합니다. 나는 데모 응용 프로그램에서 시작하여 스타일, 내용 및 잊어 버린 암호/이메일 확인 체계에 대해 약간 변경했습니다.원격으로 배포 한 후 Yii 로그인이 작동하지 않습니다.

로컬로 작동합니다. 문제는 내가 서버에 연결할 때 로그인 할 수 없다는 것입니다. main.php가 어떻게 구성되어 있는지에 따라 사용자를 인증하고 세션 또는 쿠키를 저장 한 후 login()을 호출하면 완료됩니다. 성공적으로 사용자가 리디렉션되기 전에 로그인됩니다. 그러나 페이지 리디렉션에서 계속 유지됩니다 (예 :

actionLogout() 메서드는 호출되지 않으며, 변경하지 않고 쿠키 기반 인증을 사용하거나 사용하지 않도록 설정했습니다. 응용 프로그램의 동작

로컬로 작동하기 때문에 문제는 내 서버 구성과 관련이 있습니다. 하지만 내 phpinfo가 세션을 사용할 수 있음을 보여주기 때문에 그것을 볼 수 없습니다.

여기에 어떤 문제가 있는지 아이디어를 가지고있는 사람이 있습니까? main.php, SiteController.php 및 phpinfo의 출력을 첨부 할 것입니다.

main.php - http://pastebin.com/LR4i6vYZ

SiteController.php - http://pastebin.com/Fgm1a1nV

은 phpinfo - http://pastebin.com/CDE2WqvK 나는이 동일한 문제가 발생하고 문제의 원인을 발견

+0

이 문제는 해결되었습니다. 쿠키의 TTL 값을 0에서 마지막 무한정으로 쿠키를 큰 숫자 값으로 변경했습니다. 이것은 효과가 없었어야했지만, 그렇게했습니다. 나는 Yii와 함께 버그 보고서를 제출할 것입니다.나는이 게시물이 같은 문제를 가진 다른 사람을 돕기를 바랍니다. –

+0

세션 쿠키를 얼마 동안 설정해서는 안되며, 사용자가 브라우저 창을 닫을 때 만료되어야합니다. 영구 로그인의 경우 "내 계정 정보 기억"기능을 사용하십시오. –

+0

맞습니다. 물론 TTL을 0으로 설정해야합니다. 작동하지 않는 것이 있습니다. 그래서 나는이 질문을했습니다. –

답변

3

(적어도 내 인스턴스). 위에서 언급했듯이 쿠키의 TTL 값을 설정하는 것은 좋은 생각이 아닙니다. 기본적으로 "나를 기억"하지만 사용자는 그 일을 잘 모름 - 안전하지 않습니다.

내가 마주 친 문제는 라이브 서버에 배포 할 때 로컬로 로그인 할 때 "로컬 서버가 아니라면 쿠키 기반의 인증 대신 Yii를 사용하도록 설정 한 경우에만 작동합니다. "나를 기억"을 선택하지 않을 때 얻음).

문제는 원격 서버 Yii에서 기본 PHP 세션 경로에 쓸 수 없다는 것입니다 (로컬 컴퓨터에서도 그렇게 할 수 있었지만 원격 서버에서는 사용자 계정이 자연스럽게 더 많이 잠겼습니다.).

웹 루트 외부에서 세션 폴더를 만든 다음이를 yii 구성 파일의 세션에 대한 저장 경로로 설정하여 문제를 해결했습니다.

보호 >> 설정 >> main.php

'components'=>array(
    ... 
    'session' => array (
     'savePath' => 'pathToSessionsFolder', 
    ), 
    ... 
), 

는 YII이 올바르게 세션 정보를 기록 할 수 있어야한다. 세션 ID가있는 쿠키는 클라이언트에서 항상 올바르게 설정되었지만 Yii는 저장하지 못했던 서버에 기록 된 세션 정보와 일치시킬 수 있어야합니다.

이와 다른 해결책은 같은 방식으로 Yii 설정에서 데이터베이스를 통해 세션 관리를 설정하는 것입니다 (존재하지 않는 경우 Yii가 테이블을 만들어야 함).

'session' => array (
    'class' => 'CDbHttpSession', 
    'connectionID' => 'db', 
    'sessionTableName' => 'table_name', 
), 
+1

하나의 방법이 다른 방법보다 선호됩니까? 나는 디렉토리에 아파치 쓰기 권한을 줄 필요가 없으므로 세션 정보를 데이터베이스에 저장했다. 나는 DB 방법이 아마 조금 더 느릴 것 같아요? –

관련 문제