나는 매우 이상한 문제에 직면 해있다. 내 응용 프로그램에서 CasLogin을하고있다. CAS를 성공적으로 구현했다. 즉, 모든 유효한 값과 성공한 로그인 후에 $ _SESSION 변수에 모든 값이 설정되지만, 인덱스 작업에 CasLogin() 액션 $ _SESSION에는 아무 것도 포함되어 있지 않습니다. 저는 Yii Frame Work를 사용하고 있습니다.리디렉션 후에 PHP 세션이 파괴됩니까?
여기에 코드가 있습니다.
public function actionCasLogin($CID=NULL)
{
//code to be imported from GMS here
PhpCasControl::setPhpCasContext($CID);
phpCAS::setPostAuthenticateCallback(array($this,'_saveServiceTkt'));
$loginForm = new CasLoginForm;
// validate user input and redirect to the previous page if valid
if ($loginForm->login($CID)) {
if (Yii::app()->user->isGuest){
echo '<br> <br> This shows up..';
var_dump($_SESSION);
}
else{
echo 'Hello at caslogin <br>never shows up';
var_dump(Yii::app()->user->id);
}
$this->redirect(array('index'));
}
else {
throw new Exception("You don't have sufficient permissions to access this service. Please contact Administrator !");
}
}
이 함수는 제대로 작동하고 EXIT를 입력하면; 여기 여기 이 원하는 모든 값을 $ _SESSION을 표시합니다 .. 하지만 재 지정 후 ... 인덱스에 .. 그 코드는 이것이다 ..
public function actionIndex()
{
echo"hello at index";
if (! Yii::app()->user->isGuest) {
//#CASE 1: User is already logged in
$this->redirect(array("site/upload"));
}
else{
//#CASE 2: User is not Logged in
echo '<br>shows up with empty session<br>';
var_dump($_SESSION);
var_dump(Yii::getVersion());
exit;
$this->redirect(array("site/login"));
}
}
$ _SESSION은 ..
비어왜 이런 일이 일어날 수 있는지 .. 나는 CAS가 서비스 티켓 이름으로 자체 세션을 만드는 것을 알고있다 .. 나는 CasameinForm ...에서 호출하는 RenameSession 함수에 의해 그 일을 처리했다. 코드는 다음과 같다. 이 ..
public function rename_session($newSessionId) {
//Store current session variables so that can be used later
$old_session = $_SESSION;
//Destroy current session
session_destroy();
// set up a new session, of name based on the ticket
$session_id = preg_replace('/[^a-zA-Z0-9\-]/', '', $newSessionId);
//start session with session ID as 1) service ticket in case of CAS login, 2) random sTring in case of local login.
session_id($session_id);
session_start();
//echo "<br>new session <br>";
//Restore old session variables
$_SESSION = $old_session;
//var_dump($_SESSION);
}
왜 세션 ID를 변경해야합니까? – Dinistro
Yii는 자체 세션을 만들고 CAS는 서비스 티켓 ID가있는 세션을 만들어 동일한 세션을 가리 킵니다. 이드를 바꿔야 해. – Himanshu97
하지만 아직도 세션을 다시 설정할 필요가 없습니다. 세션 값으로 cas-id를 추가 할 수 없습니까? – Dinistro