kohana3.2中的多个身份验证驱动程序

kohana3.2中的多个身份验证驱动程序,kohana,kohana-3.2,kohana-auth,Kohana,Kohana 3.2,Kohana Auth,我正在做一个项目,我试图为客户实现针对外部用户群的身份验证,这似乎是正确的 最近又增加了另一项要求,即某些人(不在上述基础中)需要能够编辑部分页面内容。首先想到的是启用单独的ORM/File Auth驱动程序,以便为数不多的编辑器能够分别对它们进行身份验证 在Kohana 3.2中是否可以同时使用两个身份验证驱动程序?Kohana的身份验证模块本机不支持使用两个驱动程序 但是,您可以很容易地自己实现一个新的驱动程序。通过复制现有驱动程序并对其进行修改,您可以按照以下说明创建新驱动程序: 简单的做

我正在做一个项目,我试图为客户实现针对外部用户群的身份验证,这似乎是正确的

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


在Kohana 3.2中是否可以同时使用两个身份验证驱动程序?

Kohana的身份验证模块本机不支持使用两个驱动程序

但是,您可以很容易地自己实现一个新的驱动程序。通过复制现有驱动程序并对其进行修改,您可以按照以下说明创建新驱动程序:

简单的做法是在您的
\u登录
方法中加入以下逻辑:

  • 检查外部用户数据库中的有效登录名
  • 如果外部用户数据库中存在有效用户,则返回true
  • 如果外部用户数据库中没有有效用户,请改为检查本地用户数据库
  • 如果本地数据库中存在该用户,则返回true

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

    // 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();
    
    限制:

  • 您必须使用不同的配置(
    驱动程序
    会话密钥
    值必须不同)。请注意,有些设置是在类中定义的,不能通过配置进行更改(例如,“记住”名为
    authologgin的cookie
  • 您不能共享默认ORM模型(
    Model\u User
    Model\u Token
    Model\u Role
    ),因为它们的名称是硬编码的。但是可以使用ORM驱动程序和文件驱动程序

  • 我已经有了单独的驱动程序,所以如果您不需要同时登录,这似乎是可行的解决方案。我只想添加属性is_external及其getter,这样客户将无法访问编辑器部分,反之亦然。我仍在调查两个自定义auth类的情况,它们派生自auth并同时工作(因此在一个控制器中,您被认证为测试客户,而在另一个控制器中被认证为编辑器)。