2013-07-30 5 views
0

Я пытаюсь установить Catalyst в первый раз. После отладки довольно долго, чтобы выяснить, почему проверка подлинности не будет работать, понял, что запрос SQL выглядитЗапрос на проверку подлинности на основе пароля находится на пароле

ВЫБЕРИТЕ me.user_id, me.password, me.role от пользователей меня WHERE (пароль =?): 'ABCD'

таблица пользователей (для тестирования PWD ясно текст)

user_id PRI пароль роль

Users.pm имеет ПАКЕТ -> set_primary_key ("user_id");

Что может быть неправильным в том, что запрос находится на пароле, а не на user_id?

Thanks

ответ

0

Звучит так, как будто хеш конфигурации сконструирован неправильно.

Я бы предположил, что id_field указывает на password вместо user_id. Вот конфиг из моего приложения (я использую Class: DBI, а не DBIx :: Class, который вы, вероятно, есть, но это не существенно). login_name мой эквивалент вашей user_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 
}; 
+0

вы правы RET. myapp.yml выглядит как Plugin :: Аутентификация: default_realm: члены царств: пользователей: удостоверение: класс: Пароль password_field: пароль password_type: ясно магазин: класс: DBIx :: Класс user_model: Вход :: Пользователи и звонок для аутентификации –

+0

Рад быть в состоянии помочь. Пожалуйста, подумайте над тем, чтобы продолжить и/или отметить ответ, если он решил вашу проблему - вот как работает SO. – RET

+0

'$ c-> authenticate ({user_id_field_name => $ username, password_field_name => $ password});' Имя поля должно совпадать с именем поля пользователя таблицы. –

Смежные вопросы