2015-01-16 2 views
0

현재 심포니 1.4 애플리케이션은 myUser 클래스를 사용하고 있습니다. 하지만 하나의 플러그인으로 작업하려면이 클래스의 동작을 재정의해야합니다. 기본 코드를 변경하는 적절한 방법이 아니므로, myUser 클래스를 확장하고 플러그인으로 사용하는 방법이 있는지 알고 싶습니다.심포니 1.4 플러그인의 사용자 클래스를 오버라이드

내가 달성하고자하는 것은 플러그인에 대해 별도의 세션 시간 제한을 유지하는 것입니다. 그렇게하기 위해 다른 플러그인의 http 요청을 내 플러그인의 http 요청과 분리해야합니다. 이것을 달성하는 또 다른 방법이 있다면, 그것은 더 좋습니다. 감사!

답변

0

앱의 lib 폴더에 myUser.class.php 파일이 있는지 확인하십시오. 당신이 sfGuardPlugin를 사용하는 경우

<?php 

class myUser extends sfBasicSecurityUser 
{ 
} 

?> 

또는 :이없는 경우 하나를 만들고 그 안에 추가

<?php 

class myUser extends sfGuardSecurityUser 
{ 
} 

?> 

그런 다음 캐시를 지 웁니다.

플러그인과 함께 사용할 수 있습니다.

세션 만료까지. 플러그인이 관리하는 정보의 종류가 명확하지 않습니다. 특정 시점에 정보를 만료시킬 수 없습니까? Symfony를 사용하면 세션 데이터를 다른 네임 스페이스에 저장할 수 있습니다. (아래 예제는 'plugin_info'를 사용합니다.) 네임 스페이스에 만료 시간이 있습니까?

예 :

나는 데 어떤 문제는 이것이다
$this->setAttribute('plugin_expiration', time() + 1000, 'plugin_info'); 

$expiration = $this->getAttribute('plugin-plugin_expiration', time() + 1000, 'plugin_info'); 

if ($expiration > time()) 
{ 
    $this->getAttributeHolder()->removeNamespace('plugin_info'); 
    // then restart the session here. 
} 
+0

, HTTP 요청을 보낼 때마다 '마지막 요청 시간'을 참고 MyUser 클래스에 업데이트됩니다. 내 플러그인은 60 초마다 Ajax 요청 (http)을 작성한다. 이렇게하면 전체 응용 프로그램의 시간 초과가 방지됩니다. 나는 이것을 피할 수밖에 없다. 이 특정 플러그인이 만든 HTTP 요청이 '마지막 요청 시간'을 업데이트하지 못하게하는 방법이 필요합니다. – arunatebel