Grails Spring Security обязательные поля - PullRequest
1 голос
/ 19 сентября 2011

Согласно базовой документации по Spring-Security в классе User обязательны только поля

String username
String password
boolean enabled

Хотя, после входа в систему с использованием моего правильного имени пользователя и пароля, я получаю следующую ошибку:

groovy.lang.MissingPropertyException: Нет такого свойства: accountExpired для класса: doit.recruiter.User

, который заставляет меня думать, что accountExpired , accountLocked и passwordExpired действительно необходимы. Как я могу заставить мой класс домена пользователя работать только с именем пользователя / паролем / включенным?

1 Ответ

2 голосов
/ 19 сентября 2011

Да, это немного вводит в заблуждение. Реализация плагина по умолчанию использует оболочку Grails вокруг класса реализации User для пользовательского интерфейса в весенней безопасности. Этот интерфейс требует три поля, которые вы не хотите иметь, и поэтому весь плагин также реализует это.

Код, который вам не удался, будет найден в реализации сведений о пользователе по умолчанию:

    boolean enabled = enabledPropertyName ? user."$enabledPropertyName" : true
    boolean accountExpired = accountExpiredPropertyName ? user."$accountExpiredPropertyName" : false
    boolean accountLocked = accountLockedPropertyName ? user."$accountLockedPropertyName" : false
    boolean passwordExpired = passwordExpiredPropertyName ? user."$passwordExpiredPropertyName" : false

Обходным путем будет реализация собственного UserDetailsService и просто установка значений в ложное жесткое кодирование. В качестве альтернативы просто используйте поля как переходные свойства в вашем доменном классе с геттерами, которые возвращают false.

Рецепт пользовательских данных можно найти здесь: http://burtbeckwith.github.com/grails-spring-security-core/docs/manual/guide/11%20Custom%20UserDetailsService.html

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