kohana3.2中的多个Auth驱动程序

时间:2012-12-13 11:58:36

标签: kohana kohana-3.2 kohana-auth

我正在开展一个项目,我正在尝试针对客户实施针对外部用户群的身份验证,这似乎工作正常。

最近又增加了另一项要求,即某些人(不在上述基地中)需要能够编辑部分页面内容。首先想到的是为少数编辑器启用单独的ORM / File Auth驱动程序,以便能够单独对它们进行身份验证。

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

2 个答案:

答案 0 :(得分:1)

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

但是,您可以非常轻松地自行实施新驱动程序。您可以按照创建新驱动程序的说明进行操作,方法是复制现有驱动程序并进行修改:http://kohanaframework.org/3.3/guide/auth/driver/develop

简单的做法是将以下逻辑放在_login方法中:

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

答案 1 :(得分: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. 您必须使用不同的配置(driversession_key值必须不同)。请注意,某些设置在类中定义,并且无法通过配置更改(例如,“记住”名为authautologin的cookie)。
  2. 您无法共享默认的ORM模型(Model_UserModel_TokenModel_Role),因为它们的名称是硬编码的。但ORM驱动程序&可以使用文件驱动程序。