【问题标题】:Kohana 3.3 expanding the Auth moduleKohana 3.3 扩展 Auth 模块
【发布时间】:2013-03-20 19:00:48
【问题描述】:

我正在使用身份验证模块构建一个应用程序,我需要至少 3 种帐户类型:雇主、员工和客户。由于这些帐户具有不同的属性、功能和关系(例如:雇主 has_many 雇员),我想我需要将它们放在 3 个单独的 ORM 模型上。

我认为的方法是调整 Auth 模块,用适当的子模型(雇主、员工、客户)替换“用户”模型,对应数据库中的用户类型。

这可以做到吗,还是不好的做法?

【问题讨论】:

  • 对所有用户使用同一个用户表,并为 Employer、Employee 和 Client 提供连接表。

标签: authentication kohana multi-user


【解决方案1】:

对于此类目标,您需要为扩展默认 Auth_ORM 的 Model_User 类的每个帐户类型创建不同的模型类。

然后您需要在您的application/classes 文件夹中创建新的Auth_ORM 类扩展Kohana_Auth_ORM 类。

在这个文件中你需要重写protected _login()方法,所以它的$user变量指向需要的账户类型。

【讨论】:

  • 但是这样你要么在你的数据库中为用户提供各种表,这将导致roles_users 中的 fk 约束出现问题,或者如果你共享一个表,你将有未使用/不需要的行。另外,为角色而不是用户设置单独的类不是更有意义吗?
  • 可能是这样。问题是:在这种情况下是否需要角色?在我的示例中,我不会使用角色。每个帐户类型本身就是一个角色。
【解决方案2】:

我在这里找到了有趣的存储库:https://github.com/alexgisby/MAuth。 我和你有同样的问题,所以如果你设法解决它,你可以分享解决方案。我认为此链接中的存储库可能是一个解决方案,但到目前为止我还没有设法实现它

【讨论】:

    【解决方案3】:

    您可以拥有 1 个模型 - 用户和 3 个不同的角色。并且根据角色,您可以加载特定的模块,其中将包含所需的类。

    例如,如果用户具有角色 Employee,您将加载 modules/role_employee

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多