Мы работаем над новым проектом с Grails 2.0.1 и Spring Security. Сбой создания пользовательского контекста из-за того, что springSecurityService в объекте домена пользователя имеет значение null. Как ни странно, это происходит только в нашем текстовом поле Linux, в то время как во всех окнах разработчика оно работает нормально. Не уверен, связано ли это с окружающей средой или с чем-то еще. В Linux Box это постоянно терпит неудачу.
Используемый нами класс пользовательского домена находится ниже (класса, сгенерированного плагином, с парой дополнительных полей). Код encodePassword обрабатывается триггерами beforeInsert(), beforeUpdate().
Наткнулся на эту ветку, в которой говорится о временных ссылках, вызывающих проблемы в веб-потоках, которые, как я полагаю, здесь не используются, поэтому не уверен, что это актуально.http://grails.1312388.n4.nabble.com/Spring-Security-Plugin-1-of-the-time-springSecurityService-null-td4349941.html
class User {
transient springSecurityService
static constraints = {
firstName blank: false, nullable: false, size: 2..100
lastName blank: false, nullable: false, size: 2..100
username blank: false, nullable: false, unique : true, email: true
password blank: false, nullable: false, size: 6..255
}
static mapping = {
password column: '`password`'
}
String username
String password
boolean enabled
boolean accountExpired
boolean accountLocked
boolean passwordExpired
/* user details */
String firstName;
String lastName;
Set getAuthorities() {
UserRole.findAllByUser(this).collect { it.role } as Set
}
def beforeInsert() {
encodePassword()
}
def beforeUpdate() {
if (isDirty('password')) {
encodePassword()
}
}
protected void encodePassword() {
password = springSecurityService.encodePassword(password)
}
}
Заранее спасибо