我正在做实践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后端的一切都很完美,但我需要覆盖后端和前端的功能
需要一些帮助
感谢
答案 0 :(得分:0)
尝试在应用“factories.yml
中设置确切的会话名称:
all:
storage:
class: sfSessionStorage
param:
session_name: my_session_name
session_cookie_domain: example.com