仅当$ _SESSION值存在时才会检测到$ this-> params ['前缀']

时间:2014-12-12 20:30:29

标签: session cakephp params

目前我正在使用Cakephp ......

此网页包含管理部分和"正常"部分...您可以使用" ... site / admin"。

访问管理部分

如果用户在网址中写入" ... site / admin"然后它被禁止重定向到管理员登录部分......

然而,如果他试图去#34;网站"直接,然后他也将被重定向到另一个登录部分,但访问正常站点。

问题是......我的代码无效......如果我尝试访问管理站点,那么我将重定向到正常的登录部分,我必须写我的凭据......然后那,我能够进入管理站点(并提示输入管理员凭据,这没关系)

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

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

正常部分 - >需要正常的凭证

但这就是现在正在发生的事情:

管理员部分 - >需要管理员凭证 - >需要正常的凭证

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

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');
        }
    }

它基本上没有使用前缀" admin"来检测我。直到我用正常(测试)凭证记录(如果你这样做,它们会自动写入"网站?测试")

我希望这很清楚......

0 个答案:

没有答案