2016-07-24 142 views
0

我有3种不同类型的用户:网站用户,赞助商和管理员,每个用户都关联到一个表。由于他们有不同的字段,我无法合并表格。cakephp 3多个身份验证登录

我想用3个不同的auth,我该怎么办?

控制器名称 1. UsersController 2. SponsorsController 3. AdminsSController

可以请你发送给我的示例代码或引导线在CakePHP的3.x的怎么办

感谢您的帮助!

+0

,我已经处理过类似情况的方法是有一个简单的用户表只包括公用字段访问您的登录面板(例如用户名,姓名,密码,电子邮件),然后该表包含赞助商,管理员等记录。有点不同的数据库结构,并且可以承认有点棘手,以使这些记录的创建和关联正常工作,但结果会简化所有与授权相关的检查。 –

+0

只需在您的数据库表中创建一个user_type字段,然后添加您的类型cakephp有一个简单的博客教程。 http://book.cakephp.org/3.0/en/tutorials-and-examples/blog-auth-example/auth.html#blog-tutorial-authentication-and-authorization –

+0

我会保持一切,并且或者根据角色重定向,或者根据该角色切换显示的内容并形成等等。这通常比分裂登录URL更不容易出错。 – mark

回答

0

有很多方法可以实现它。您可以简单地在/ src/Controllers文件夹下创建admin_panel和sponsors_panel文件夹。

然后在这些文件夹中创建相关的控制器,并根据您的网站在/confing/routes.php中定义路由。

Router::prefix('admin_panel', function ($routes) { 
    $routes->connect('/', ['controller' => 'Admin', 'action' => 'login']); 
    $routes->fallbacks('DashedRoute'); 
}); 

Router::prefix('sponsors_panel', function ($routes) { 

     $routes->connect('/', ['controller' => 'Sponsors', 'action' => 'login']); 
     $routes->fallbacks('DashedRoute'); 
    }); 

然后你就可以使用

http://www.example.com/sponsors_panel

http://www.example.com/admin_panel