Cakephp多用户类型登录

Cakephp多用户类型登录,php,cakephp,authentication,login,Php,Cakephp,Authentication,Login,我对cakephp很陌生,所以请耐心地接受我。我正在做一个小任务,我已经完成了很多事情,但我被一个问题打动了。我的任务有两种不同的用户类型,我需要两个不同的登录名,或者一个登录名将重定向它们。我阅读了关于使用用户模型、控制器和表的官方教程,但问题是它只适用于一种用户类型。我想要的是,一旦我的应用程序被打开,就会显示一个登录页面,根据用户类型(管理员或员工),它们将被重定向到各自的索引页面。 我创建了employee表和admin表,它们都包含用户名和密码字段。教程说用户表应该有用户名和密码字段,

我对cakephp很陌生,所以请耐心地接受我。我正在做一个小任务,我已经完成了很多事情,但我被一个问题打动了。我的任务有两种不同的用户类型,我需要两个不同的登录名,或者一个登录名将重定向它们。我阅读了关于使用用户模型、控制器和表的官方教程,但问题是它只适用于一种用户类型。我想要的是,一旦我的应用程序被打开,就会显示一个登录页面,根据用户类型(管理员或员工),它们将被重定向到各自的索引页面。
我创建了employee表和admin表,它们都包含用户名和密码字段。教程说用户表应该有用户名和密码字段,但我不想使用用户表,因为我已经在这两个表中都有了这些字段。所以,完全不使用用户表,而使用我的当前表进行用户登录和身份验证是可能的。请指导我,因为我在这个问题上从过去几个小时。非常感谢您提供的帮助或指导。

您只能使用一种型号(
用户
),并且有一个名为
类型
的字段,其值可以是
管理员
员工

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

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

userscocontroller
-
dashboard
方法将在用户刚刚登录后调用,因此您可以在这里获取用户类型并重定向到正确的页面。

您的逻辑不太合理。如果管理员和用户具有相同的用户名怎么办?所有用户都应在同一张表上,并具有不同的
user\u type\u id
或等效项


但是如果你想坚持你当前的计划,让他们登录到同一个页面,那么你只需要尝试以用户身份登录一个人,如果成功重定向到用户页面,如果失败,请以管理员身份重试。如果成功重定向到管理员页面,如果失败,则表示用户名/密码在这两种情况下均无效。这样至少可以获得某种基本的安全性。

或者只是一个简单的角色/role\u id字段。提示:谢谢你的回答,我明白你的意思,但是LoginDirect和logutRedirect可以为任意一个用户定义,而不是同时为两个用户定义,我已经为员工定义了它。但是如果用户角色是admin呢?在哪里定义该条件?我可以使用两个$components,还是需要在UsersController页面上定义它?你能告诉我吗?这真的很有帮助。