Spring security, пароль с неанглийскими символами, такими как «š, č, ć, ž, đ», вход не выполнен - PullRequest
0 голосов
/ 13 декабря 2011

У меня есть приложение Grails с плагином spring-security-core. В моем файле conf / spring / resources.groovy я определил

import org.springframework.security.authentication.encoding.PlaintextPasswordEncoder
beans = {
    passwordEncoder(PlaintextPasswordEncoder)
}

чтобы я мог сохранять пароли в виде простого текста в БД MySql, как это было объяснено здесь Безопасность Spring без кодировки пароля

в views / login / auth.gsp Я также добавил в <head> блок

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

и в Datasource.groovy

url = "jdbc:mysql://localhost:3306/blabla?useUnicode=true&characterEncoding=utf8"

Я создал пользователя с именем пользователя = ččč и паролем = ččč успешно, но когда я пытаюсь войти в систему с этим пользователем, я получаю сообщение об ошибке «Извините, мы не смогли найти пользователя с таким именем пользователя и паролем». Я проверил базу данных, и пользователь существует с этими значениями поля.

Я попытался войти в систему с другим пользователем, у которого username = admin, password = admin, и он работает нормально. Поэтому я предполагаю, что это как-то связано с тем, что j_username и j_password не принимают неанглийские символы ... Как включить поля формы входа в систему для приема набора символов utf-8?

У меня есть:

Граальс 1.3.7

Spring-Security-Core 1.2.6

СТС 2.8.1

MySQL-разъем-Java-5.1.18

Windows 7

1 Ответ

0 голосов
/ 14 декабря 2011

Первый совет: не используйте незашифрованные пароли. Второй совет: проверьте, какие SQL-запросы отправляются в базу данных. Это необходимо в вашем Config.groovy для просмотра операторов Hibernate и значений их параметров:

log4j = { 
        debug 'org.hibernate.SQL' 
        trace 'org.hibernate.type' 
} 
...