2012-03-12 2 views
1

"yiisession"테이블에 추가 정보를 추가 할 가능성이 있습니까?Yii 세션 : "yiisession"에 더 많은 정보 추가

기본적으로 테이블에는 "id", "expire"및 "data"열만 있습니다. 내 자신을 위해 "userid"에 대해 다른 것을 추가하고 싶습니다.

내 슈퍼 유저가 강제로 모든 사용자를 로그 아웃 할 수 있도록 열을 추가하는 이유. Yii 세션에서 작성된 "id"는 암호화되기 때문에.

어떻게 할 수 있습니까?

(원하는 세션 값을 얻을 수있는 "데이터"열을 구문 분석? 확인 될 것입니다 수없는 경우)

답변

2

당신은 CDbHttpSession를 확장하여 당신이 필요로하는 일을 할 수있는 자신 만의 세션 저장소 클래스를 만들 수 있습니다 필요한 메서드와 속성을 추가 할 수 있습니다. 응용 프로그램 구성 요소 디렉토리에

class MyDbHttpSession extends CDbHttpSession 
{ 
    public function setUserId($userId) 
    { 
     $db=$this->getDbConnection(); 
     $db->setActive(true); 
     $db->createCommand()->update(
      $this->sessionTableName, 
      array('userId'=>$userId), // I asume you added a column 'userId' to your session table 
      'id=:id', 
      array(':id'=>session_id()) 
     ); 
    } 
} 

장소 수업을하고 새 구현 세션 구성 요소 클래스를 설정하여 응용 프로그램의 설정에 추가 : 예를 들어 id 컬럼을 추가하면 다음과 같을 수

// ... 
'components' => array(
    // ... 
    'session' => array(
     'class' => 'application.components.MyDbHttpSession', 
     // ... 
    ) 
    // ... 
) 
+0

그것은 훌륭한 해결책이었습니다. 잘 했어, 고마워 .. !! – Arfeen

관련 문제