1

Catalyst::Plugin::Authentication如果用户 uesrid 由域(即复合键)限定,那么最有效的工作方式是什么?它支持这个功能吗?我正在专门研究使用Catalyst::Plugin::Authentication::DBI,但如果它没有当前功能,我不反对分叉、修补、重新创建它。

我需要使用特定密码登录特定域名。似乎 /all/C:P:A模块依赖于简单的用户 ID / 密码组合。欢迎其他示例和提示。

4

2 回答 2

7
  1. Catalyst::Authentication::Store::DBIx::Class 支持在您喜欢的任何类型的密钥上查找用户,因为您提供的所有身份验证信息(指定的密码字段除外)都将转换为数据库查询,您$c->authenticate({ last_name => "Fred", favorite_color => "Blue" })如果你愿意,可以做。

  2. 如果您编写RealmStore ,几乎您能想象到的任何事情都是可能的,并且没有理由让它们变得复杂——只需实现一两个方法并继承其余方法的类。你必须使用哪一个取决于你的应用程序正在做什么的细节——find_user在领域中覆盖会更容易;写一个新的 Store 会有点棘手。

于 2010-03-05T22:23:28.183 回答
-2

真正的答案是Catalyst::Plugin::Authentication要求from_session并且for_user处理序列化的密钥for_user返回序列化的密钥,from_session返回用户。这会产生一个问题,因为目前在其角色实现或在其实现C:P:A:DBI中不允许多密钥用户。奇怪的是,它确实允许在 find_user 的用户检索中使用复杂的键值条件。目前,缺点是假设所有用户都使用 uid/guid/pkid 等标识。from_sessionfor_user

为了让用户使用复合键标识,查询条件必须附加到存储中,或者缓存在for_user序列化键中。两者都可以通过补丁来实现。

奇怪的是,我在3 年前创建 LDAP 存储时也遇到了同样的困惑。

在我对其进行修补、分叉或有人向Catalyst::Plugin:: Authentication::Store::DBI. 我已经重写了这个模块,它可以在http://github.com/EvanCarroll/Catalyst-Authentication-Store-DBI

于 2010-03-08T20:13:14.127 回答