CakePHP的多个用户类型登录
我非常新的CakePHP非常和善和我一起承担。我正在做一个小小的任务,我已经完成了很多事情,但是我遇到了一个问题。我的任务有两种不同的用户类型,我需要两个不同的登录名,或者可能是一个登录名将重定向他们。我阅读了有关使用用户模型,控制器和表的官方教程,但问题在于它仅适用于一种用户类型。我想要的是,一旦我的应用程序打开,显示登录页面,并根据用户类型(管理员或员工)将他们重定向到其各自的索引页面。 我已经创建了员工表和管理员表,并且都包含用户名和密码字段。教程说用户表应该有用户名和密码字段,但我不想使用用户表,因为我已经在这两个表中都有这些字段。所以有可能根本不使用用户表,并使用我的当前表进行用户登录和认证。请引导我,因为我在过去的几个小时里面遇到了这个问题。非常感谢您提供的帮助或指导。CakePHP的多个用户类型登录
您只能使用一个模型(User
)并且有一个名为type
的字段,其值可以是admin
和employe
。
这样你就不必在多个表中相同的字段,你就可以只有一个登录表单,并在用户登录后,你可以将用户重定向到正确的页面。
在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
方法,用户刚刚登录后会被调用,所以在这里你可以得到用户类型和重定向到正确的页面。
您的逻辑是不是很健全。如果管理员和用户具有相同的用户名会怎么样?所有用户都应该在同一张桌上,区别为user_type_id
或同等表。
但是,如果你要坚持你目前的方案和让他们在同一个页面,那么你只剩下尝试登录的人作为一个用户,如果成功重定向到用户的网页登录,如果失败再次作为管理员,如果它成功重定向到管理页面,如果失败意味着用户名/密码对于这两种情况都是无效的。这样至少可以得到的一些种基本安全。
或者只是一个简单的角色/ role_id字段。提示:[微小](http://www.dereuromark.de/2011/12/18/tinyauth-the-fastest-and-easiest-authorization-for-cake2/) – mark
感谢您的回答,我明白你在说什么,但loginRedirect和logutRedirect可以为任何用户不能同时定义,我已经将它定义为员工。但是,如果用户角色是管理员呢?在哪里定义该条件?我可以使用两个$组件,或者我需要在UsersController页面上定义它?你能告诉我吗? IT会非常有帮助。 – user3224207