催化剂认证查询是在密码上

时间:2013-07-30 12:04:02

标签: authentication catalyst

我正在尝试首次设置Catalyst。经过一段时间的调试以找出验证不起作用的原因后,意识到sql查询看起来像

选择me.user_id,me.password,me.role FROM users me WHERE(密码 =?):'abcd'

users表(对于测试pwd是明文)

user_id PRI 密码 角色

Users.pm有 的 PACKAGE - > set_primary_key( “USER_ID”);

查询是在密码而不在user_id上可能有什么问题?

由于

1 个答案:

答案 0 :(得分:0)

听起来配置哈希的构造不正确。

我建议id_field指向password而不是user_id。这是我的应用程序的配置(我使用的是Class:DBI,而不是你可能的DBIx :: Class,但这并不重要)。 login_name相当于您的user_id,即用户ID存储在其中的字段:

my $authenticationconfig = {
    default_realm => 'login_name',

    login_name => {
        credential => {
            class => 'Password',
            password_field => 'password',
            password_type => 'crypted'
        },
        store => {
            class => 'Class::DBI',
            user_class => '__myapp__::__myusertable__',
            id_field => 'login_name' ## have you got password here?
        }
    },
    ... # other realms
};