Grails / Spring Security: невозможно войти с новым пользователем - PullRequest
7 голосов
/ 20 августа 2011

Я только начал использовать grails и установил плагины spring-security и spring-security-ui.Я следую учебному пособию, данному здесь .Приложение запускается с одним загруженным пользователем me с разрешением ROLE_ADMIN.

С помощью сценариев переопределения пользовательского интерфейса я смог запустить и запустить функцию регистрации, и она работает нормально.Теперь я установил сценарии управления пользователями (grails s2ui-override user), чтобы попытаться добавлять, редактировать, удалять пользователей.

Новый пользователь создан хорошо, я проверил это по экземпляру HSQLDB.Тем не менее, если я сейчас выйду из приложения и попытаюсь войти в систему только что созданным пользователем, приложение сообщит мне, что не может найти пользователя с предоставленными именем пользователя и паролем.

Я не изменялобработка выхода из системы по умолчанию, поэтому я использую /j_spring_security_logout, что, как говорится в документации, делает сеанс недействительным.

Это известная проблема?Если так, как я могу обойти это, или если нет, как я могу отладить эту проблему?

РЕДАКТИРОВАТЬ:

Эта проблема также сохраняется без добавления пользовательского интерфейса.Зарегистрируйтесь как новый пользователь.Как только вы закончите проверку электронной почты, вы автоматически войдете на сайт.Теперь выйдите из системы и попробуйте войти снова.Выдает ту же ошибку.

ФИНАЛЬНОЕ РЕДАКТИРОВАНИЕ:

Плагин пользовательского интерфейса поставляется с RegisterController, который все еще кодирует пароль.Тем не менее, новые классы доменов, которые идут с ядром, также делают это, и рекомендуемая практика состоит в том, что контроллеры не должны.Я закомментировал строку, которая теперь выполняет кодирование и вход / выход из системы, по крайней мере, для базового сценария.

Ответы [ 2 ]

7 голосов
/ 20 августа 2011

В этом руководстве есть предупреждение

Более ранние версии плагина не включали логику шифрования паролей в класс домена, но это делает код намного чище.

Я предполагаю, что плагин security-ui не знает об этом изменении, и сравнивает незашифрованный пароль с зашифрованным паролем в базе данных.

3 голосов
/ 23 сентября 2011

Мне удалось исправить мою проблему. Проблема была в двойном шифровании. В пользовательском контроллере Spring в пользовательском контроллере в строке 41 пароль шифровался, а затем снова классом домена, поэтому при входе в систему он сравнивал двойной зашифрованный пароль и один зашифрованный пароль. Для решения проблемы я просто закомментировал строку 41 в пользовательском контроллере, который шифровал пароль

РЕДАКТИРОВАТЬ: Если у вас возникли проблемы с выяснением того, куда можно перейти для редактирования контроллера, вы можете найти исходный код загруженных плагинов в

вашего домашнего пользователя.

/. Grails / версия / проекты / имя_проект / плагин

каталог для редактирования (по крайней мере, в Mac / Linux, не знаю, где его можно найти в Windows).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...