Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security sfGuardUser Symfony中的身份验证问题(安全过滤器)_Security_Cookies_Symfony1_Filter_Sfguard - Fatal编程技术网

Security sfGuardUser Symfony中的身份验证问题(安全过滤器)

Security sfGuardUser Symfony中的身份验证问题(安全过滤器),security,cookies,symfony1,filter,sfguard,Security,Cookies,Symfony1,Filter,Sfguard,我正在使用symfony1.2.7和sfGuardUser插件。我能够查看所有页面,登录和注销。但是,当我尝试编辑(仅进入表单)或更新对象(保存更改)时,有时会出现身份验证问题,symfony会再次将我重定向到编辑表单页面。我有时会强调,因为这正是让我发疯的原因:) 用户有cookie和memory_cookie。我对这两个cookie都使用cookie域“.domain.com”,因为我们使用子域 在filters.yml上,我有以下内容: security: ~ remember: c

我正在使用symfony1.2.7和sfGuardUser插件。我能够查看所有页面,登录和注销。但是,当我尝试编辑(仅进入表单)或更新对象(保存更改)时,有时会出现身份验证问题,symfony会再次将我重定向到编辑表单页面。我有时会强调,因为这正是让我发疯的原因:)

用户有cookie和memory_cookie。我对这两个cookie都使用cookie域“.domain.com”,因为我们使用子域

在filters.yml上,我有以下内容:

security: ~

remember:
  class:   sfGuardBasicSecurityFilter
该过滤器是许多人使用的过滤器:

class sfGuardBasicSecurityFilter extends sfFilter
{
  public function execute ($filterChain)
  {
    if ($this->isFirstCall() && !$this->getContext()->getUser()->isAuthenticated())
    {
      if ($cookie = $this->getContext()->getRequest()->getCookie(sfConfig::get('app_sf_guard_plugin_remember_cookie_name', 'sfRemember')))
      {
        $q = Doctrine_Query::create()
              ->from('sfGuardRememberKey r')
              ->innerJoin('r.sfGuardUser u')
              ->where('r.remember_key = ?', $cookie);

        if ($q->count())
        {
          $this->getContext()->getUser()->signIn($q->fetchOne()->sfGuardUser);
        }
      }
    }

    $filterChain->execute();
  }
}
在模块/config/security.yml上

edit:
  is_secure:   on

update:
  is_secure:   on
看看http头,它给了我一个HTTP302的答案。如果我看一下引发这种重定向的代码;我注意到,就在编辑或更新操作之前,它似乎无法识别用户:

Jul 08 19:03:15 symfony [info] {sfFilterChain} Executing filter "sfBasicSecurityFilter"
Jul 08 19:03:15 symfony [info] {sfFilterChain} Executing filter "sfRenderingFilter"
Jul 08 19:03:15 symfony [info] {sfFilterChain} Executing filter "sfGuardBasicSecurityFilter"
Jul 08 19:03:15 symfony [info] {sfDoctrineLogger} executeQuery : SELECT COUNT(*) AS num_results FROM (SELECT s.id, s.ip_address FROM sf_guard_remember_key s ...
Jul 08 19:03:16 symfony [info] {sfDoctrineLogger} executeQuery : SELECT s.id AS s__id, s.user_id AS s__user_id, s.remember_key AS s__remember_key, s.ip_address ...
Jul 08 19:03:16 symfony [info] {myUser} User is authenticated
Jul 08 19:03:16 symfony [info] {sfDoctrineLogger} executeQuery : SELECT s.id AS s__id, s.name AS s__name, s.description AS s__description, s.created_at AS ....
Jul 08 19:03:16 symfony [info] {sfDoctrineLogger} executeQuery : SELECT s.id AS s__id, s.name AS s__name, s.description AS s__description, s.created_at AS ....
Jul 08 19:03:16 symfony [info] {myUser} Add credential(s) ""
Jul 08 19:03:16 symfony [info] {sfDoctrineLogger} executeQuery : UPDATE sf_guard_user SET last_login = ?, updated_at = ? WHERE id = ? - (...
Jul 08 19:03:16 symfony [info] {sfFilterChain} Executing filter "subdomainFilter"
你知道我可以在哪里继续寻找,或者我如何修复它吗


非常感谢

修复了两台服务器同时运行的问题。我们已经改为使用Memcache存储cookie。

修复了两台服务器同时运行的问题。我们已经改为使用Memcache存储cookie。

嘿,我在symfony 1.4上遇到了类似的问题

基本上,我会登录到我的应用程序,然后当我尝试与该页面交互时,突然又被重定向到登录页面。这真的很奇怪,因为在我的开发机器上,一切都很好。在主机服务器上,我的代码将让我登录,然后如果我刷新页面或尝试执行任何操作,我将被重定向到登录屏幕。几次刷新使我试图访问的资源弹出并断断续续地消失。这是非常奇怪的,没有模式,我无法理解,直到我读了你的帖子。然后我打电话给我的托管公司,看看他们是否在进行某种负载平衡,以及他们是否在服务器之间正确地共享会话信息

显然,他们弄乱了会话路径,因此我的一些请求将发送到服务器,而这些服务器不知道会话是什么样子。这些请求将我重定向到登录屏幕。原始服务器具有正确的会话路径,因此,当他们为我的请求提供服务时,一切都会恢复正常。
干杯,

嘿,我在symfony 1.4上遇到了类似的问题

基本上,我会登录到我的应用程序,然后当我尝试与该页面交互时,突然又被重定向到登录页面。这真的很奇怪,因为在我的开发机器上,一切都很好。在主机服务器上,我的代码将让我登录,然后如果我刷新页面或尝试执行任何操作,我将被重定向到登录屏幕。几次刷新使我试图访问的资源弹出并断断续续地消失。这是非常奇怪的,没有模式,我无法理解,直到我读了你的帖子。然后我打电话给我的托管公司,看看他们是否在进行某种负载平衡,以及他们是否在服务器之间正确地共享会话信息

显然,他们弄乱了会话路径,因此我的一些请求将发送到服务器,而这些服务器不知道会话是什么样子。这些请求将我重定向到登录屏幕。原始服务器具有正确的会话路径,因此,当他们为我的请求提供服务时,一切都会恢复正常。
干杯,

Hey fesja,您如何更改sfguard cookie域?请看这个帖子上的问题:嘿,fesja,你如何更改sfguard cookie域?请参阅此线程上的问题: