Session $this->;仅当存在$会话值时,才会检测到参数[';前缀';]

Session $this->;仅当存在$会话值时,才会检测到参数[';前缀';],session,cakephp,params,Session,Cakephp,Params,目前我正在使用Cakephp 此网页包含一个管理部分和一个“正常”部分。。。您可以使用“…站点/admin”访问管理部分 如果用户在url中写入“…站点/admin”,则支持将其重定向到管理员登录部分 但是,如果他试图直接进入“站点”,那么他也将被重定向到另一个登录部分,但用于访问正常站点 问题是。。。我的代码不工作。。。如果我尝试访问管理站点,那么我将被重定向到正常登录部分,我必须写入我的凭据。。。然后,我可以进入管理员站点(并提示输入管理员凭据,这是可以的) 如果所有这些听起来令人困惑,您必

目前我正在使用Cakephp

此网页包含一个管理部分和一个“正常”部分。。。您可以使用“…站点/admin”访问管理部分

如果用户在url中写入“…站点/admin”,则支持将其重定向到管理员登录部分

但是,如果他试图直接进入“站点”,那么他也将被重定向到另一个登录部分,但用于访问正常站点

问题是。。。我的代码不工作。。。如果我尝试访问管理站点,那么我将被重定向到正常登录部分,我必须写入我的凭据。。。然后,我可以进入管理员站点(并提示输入管理员凭据,这是可以的)

如果所有这些听起来令人困惑,您必须知道:

管理员部分->需要管理员凭据

普通部分->需要普通凭证

但现在正在发生的是:

管理员部分->需要管理员凭据->需要普通凭据

这是代码,它位于AppController上(程序直接指向重定向(site.com),我不明白为什么)

它基本上不会检测到我正在使用前缀“admin”,直到我使用正常(测试)凭据登录(如果您使用“site?test”,它们会自动写入)


我希望这是清楚的…

不要在CakePHP应用程序中调用session_start()。框架应该为您解决这个问题。同样,不要直接访问$\u会话。使用会话组件,原因与不应使用会话启动()相同。另外,根据您是管理员还是用户,为什么有两个独立的登录过程?请使用Auth组件,并使用用户表中的字段来指示登录的用户是管理员还是普通用户。事实上:利用框架-不要对抗它。有两个单独的登录过程,因为其中一个部分是管理员(控制网站内部内容)另一个是查看内容,它们完全不同。。。此外,我无法控制95%的网页,因为它来自我的客户,我无法修改他们的代码,所以我必须适应。这些答案很有用,但不能解决我的问题,问题是,为什么前缀admin没有被检测到?为什么会在会话变量启动时检测到它?我通过在用户尝试转到管理页面时直接记录正常凭据来解决这个问题。。。
function beforeFilter() 
    {
        session_start();
        if($this->params['prefix'] == 'admin'){ //Si se quiere ir a la sección de admin...
            if($this->Session->check('Admin.logged')){ //si esta logueado...
                $this->layout = 'admin'; //Pone el layout de admin
            }else{ //Si no esta logeado un admin...
                $this->redirect(array('controller'=>'info','action'=>'login','admin'=>false)); //lo redirige al login.
            }
        }
        else //si no está en admin, está en todas las demás páginas, a las cuales no debería poder entrar si no está logueado...
        {
            //si le ponés test=true te deja entrar igual y te llena los valores de sesión, esto es más que nada para poder hacer las pruebas de forma local...
            $value = $this->request->query('test');
            if (isset($value))
            {
                $_SESSION['web']['nombre'] = 'John';
                $_SESSION['web']['apellido'] = 'Doe';
            }
            if(!isset($_SESSION['web']['nombre']))
                $this->redirect('http://www.thesite.com.ar');
        }
    }