2012-12-13 28 views
0

我正在开发一个项目,我正试图对外部用户群实施身份验证,这似乎是正常工作。kohana3.2中的多个Auth驱动程序

最近又增加了另一项要求,即有些人(不在上述基地中)需要能够编辑部分页面内容。首先想到的是为单独的少数编辑者启用单独的ORM /文件身份验证驱动程序。

是否可以在Kohana 3.2中同时使用两个Auth驱动程序?

回答

1

是的,您可以一次使用不同的驱动程序。只要创建另一个实例,而不是标准的单例:

// default Auth 
$config = Kohana::$config->load('auth'); 
$auth = new Auth($config); 
$user = $auth->get_user(); 
// special Auth for administration 
$config2 = Kohana::$config->load('admin_auth'); 
$auth2 = new Auth($config2); 
$admin = $auth2->get_user(); 

限制:

  1. 您必须使用不同的configs(driversession_key值必须不同)。请注意,某些设置是在类中定义的,不能通过配置进行更改(例如,“记住”名为authautologin的cookie)。
  2. 你不能共享默认的ORM模型(Model_User,Model_Token,Model_Role),因为它们的名字是硬编码的。但是ORM驱动程序&可以使用文件驱动程序。
1

Kohana的Auth模块本身不支持使用两个驱动程序。

但是,您可以非常轻松地实现新驱动程序。您可以按照指示通过复制现有的驱动程序,并修改它,在这里创建一个新的驱动程序:http://kohanaframework.org/3.3/guide/auth/driver/develop

简单的事情将是把下面的逻辑在_login方法:

  1. 检查用于有效登录的外部用户数据库
  2. 如果外部用户数据库中存在有效的用户,则返回true。
  3. 如果在外部用户数据库中没有有效的用户,请改为检查本地用户数据库。
  4. 如果用户存在于本地数据库中,则返回true。
+0

我已经有单独的驱动程序,所以如果你不需要同时登录这似乎是可行的解决方案。我只会将属性is_external添加到其getter中 - 因此客户将无法访问编辑器部分,反之亦然。 – bjauy

+0

我仍在调查两个自定义auth类的情况,它们来源于Auth并同时工作(所以在一个控制器中,您被验证为测试客户,另一个作为编辑器)。 – bjauy

相关问题