如何在cakephp中为前端和后端分别登录?

问题描述 投票:0回答:2

我正在使用客户也可以从前端登录的应用程序。 它可以正常工作,但问题是在这种情况下客户还可以看到后端功能。 反之亦然,当我登录后端时,我也会自动登录fronend。 它给我带来了麻烦。

任何人都建议我为网站中的管理员和客户实施单独的登录。

还是有其他方法可以做到这一点? 请提出建议。

cakephp cakephp-2.0
2个回答
1
投票

您不需要单独的登录,只需要使用角色(或它们的某些变体)。

基本思想是,当某人登录时,您可以检查其“角色”,然后采取相应的措施。

因此,如果某人登录并且是“用户”,请将其发送到用户个人资料页面。 如果他们是“管理员”,请将其发送到管理控制台。

然后,在用户执行操作之前,使用某种形式的检查来验证访问权限。

一个示例是在AppController中设置isAuthorized()方法。 在CakePHP书中查看更多详细信息

这将使您能够比较他们试图访问的控制器/操作,它们的角色和URL前缀(如果您使用/ admin / ...作为示例),并确定是否应授予他们访问权限。

有很多方法可以处理这种情况,但是基本思想就在那里。 找出他们是谁,以及他们是什么角色,并建立您的逻辑以确定1)应该去哪里,以及2)被允许去哪里。


0
投票

您可以通过在cakephp appcontroller中的beforeFilter函数中添加以下代码来实现。

if($ this-> params ['prefix'] =='admin'){

        $this->layout = 'admin';
        AuthComponent::$sessionKey = 'Auth.Admin';
        $this->Auth->authenticate = array(
            'Form' => array(
                'fields' => array('username' => 'email'),
                'scope' => array ('User.role_id' => '1', 'User.status' => 1),
            )
        );
        $this->Auth->loginAction = array('controller' => 'users','action' => 'login','admin' => true);
        $this->Auth->loginRedirect = array('controller' => 'users','action' => 'dashboard','admin' => true);
        $this->Auth->logoutRedirect = array('controller' => 'users','action' => 'login','admin' => true);

    }else{
        AuthComponent::$sessionKey = 'Auth.User';
        $this->Auth->authenticate = array(
            'Form' => array(
                'fields' => array('username' => 'email'),
                'scope' => array ('User.role_id >' => '2','User.status' => 1),
            )
        );

        $this->Auth->loginAction = array('controller' => 'users','action' => 'login');
        $this->Auth->loginRedirect = array('controller' => 'users','action' => 'dashboard');
        if($this->Session->read('Auth.User.role_id') == CORPORATE){
            $this->Auth->logoutRedirect = array('controller' => 'users','action' => 'corporate_login');
        }else{
            $this->Auth->logoutRedirect = array('controller' => 'users','action' => 'login');
        }

    }   

如果您没有角色,则可以将其从作用域中删除。

© www.soinside.com 2019 - 2024. All rights reserved.