CakePHP的多个用户类型登录

问题描述:

我非常新的CakePHP非常和善和我一起承担。我正在做一个小小的任务,我已经完成了很多事情,但是我遇到了一个问题。我的任务有两种不同的用户类型,我需要两个不同的登录名,或者可能是一个登录名将重定向他们。我阅读了有关使用用户模型,控制器和表的官方教程,但问题在于它仅适用于一种用户类型。我想要的是,一旦我的应用程序打开,显示登录页面,并根据用户类型(管理员或员工)将他们重定向到其各自的索引页面。 我已经创建了员工表和管理员表,并且都包含用户名和密码字段。教程说用户表应该有用户名和密码字段,但我不想使用用户表,因为我已经在这两个表中都有这些字段。所以有可能根本不使用用户表,并使用我的当前表进行用户登录和认证。请引导我,因为我在过去的几个小时里面遇到了这个问题。非常感谢您提供的帮助或指导。CakePHP的多个用户类型登录

您只能使用一个模型(User)并且有一个名为type的字段,其值可以是adminemploye

这样你就不必在多个表中相同的字段,你就可以只有一个登录表单,并在用户登录后,你可以将用户重定向到正确的页面。

Auth组件,你将永远知道当前登录的人是什么类型的用户,这样你就可以在其他控制器使用此。

AppController,你可以有

public $components = array(
    'Auth' => array(
     'loginAction' => array(
      'controller' => 'Users', 
      'action' => 'login' 
     ), 
     'loginRedirect' => array(
      'controller' => 'Users', 
      'action' => 'dashboard' 
     ), 
     'logoutRedirect' => array(
      'controller' => 'pages', 
      'action' => 'display', 
      'home' 
     ), 
     'authorize' => array('Controller') 
    ) 
); 

UsersController - dashboard方法,用户刚刚登录后会被调用,所以在这里你可以得到用户类型和重定向到正确的页面。

+0

感谢您的回答,我明白你在说什么,但loginRedirect和logutRedirect可以为任何用户不能同时定义,我已经将它定义为员工。但是,如果用户角色是管理员呢?在哪里定义该条件?我可以使用两个$组件,或者我需要在UsersController页面上定义它?你能告诉我吗? IT会非常有帮助。 – user3224207

您的逻辑是不是很健全。如果管理员和用户具有相同的用户名会怎么样?所有用户都应该在同一张桌上,区别为user_type_id或同等表。

但是,如果你要坚持你目前的方案让他们在同一个页面,那么你只剩下尝试登录的人作为一个用户,如果成功重定向到用户的网页登录,如果失败再次作为管理员,如果它成功重定向到管理页面,如果失败意味着用户名/密码对于这两种情况都是无效的。这样至少可以得到的一些种基本安全。

+0

或者只是一个简单的角色/ role_id字段。提示:[微小](http://www.dereuromark.de/2011/12/18/tinyauth-the-fastest-and-easiest-authorization-for-cake2/) – mark