在symfony中覆盖isAuthenticated()

时间:2011-04-04 21:06:03

标签: php symfony1 sfguard

我正在做实践symfony with Doctrine - Jobeet Job Website 只是想了解后端是如何工作的,我试图覆盖前端和后端的isAuthenticated()函数,我做了什么很简单,在我的apps \ frontend \ lib \ myUser.class.php文件中,我做了这个公开

function isAuthenticated()
{
    return (bool)($this->authenticated && $this->getAttribute('is_customer', false, 'sfGuardSecurityUser'));
}

我也像这样覆盖了sfDoctrineGuard的signIn功能

public function signIn($user, $remember = false, $con = null)
{
    parent::signIn($user, $remember, $con);
    if($this->authenticated){
        $this->setAttribute('is_customer', true, 'sfGuardSecurityUser');
    }
}

我在apps \ backend \ lib \ myUser.class.php中为后端做了同样的事情,但是使用 is_admin ,直到现在一切都很完美,只是在后端,当我要去编辑一个Job,会话中的 sfGuardSecurityUser 会丢失,原因是,因为在此页面中调用的isAuthenticated()函数位于apps \ frontend \ lib \ myUser.class.php中,因此,当我尝试更改页面时,我会注销,cuz isAuthenticated()函数调用位于apps \ backend \ lib \ myUser.class.php中,听起来很少见,但它只发生在Jobs的编辑页面中,现在我被困在这里,希望你们都理解我,更具体地说,当我去工作/编辑页面并在动作中我放了一个 print_r($ _ SESSION),我可以看到这篇文章

[sfGuardSecurityUser] => Array
            (
                [user_id] => 1
                [is_admin] => 1
            )  

但如果我重新加载页面,我再也看不到这个了,所以,当我尝试更改页面时,我会退出,等等,如果我评论或从apps \ frontend \ lib中删除isAuthenticated \ myUser.class.php后端的一切都很完美,但我需要覆盖后端和前端的功能

需要一些帮助

感谢

1 个答案:

答案 0 :(得分:0)

尝试在应用“factories.yml中设置确切的会话名称:

all:
  storage:
      class: sfSessionStorage
      param:
        session_name: my_session_name
        session_cookie_domain: example.com