0

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

SELECT me.user_id, me.password, me.role FROM users me WHERE ( password = ?): 'abcd'

用户表(测试密码是明文)

user_id PRI 密码角色

Users.pm 有 PACKAGE ->set_primary_key("user_id");

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

谢谢

4

1 回答 1

0

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

我建议 the id_fieldis 指向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
};
于 2013-07-31T01:18:02.890 回答