Плагин Grails и Core Security - аутентификация от клиента - PullRequest
2 голосов
/ 28 октября 2011

Я начинаю использовать плагин spring-security-core-1.1.3 с Grails. Моя заявка на аутентификацию отправляет запрос на сервер:

def authSomeAction = {
    def req = ...//http requet here
    if(req.contains("yes")){
       render "There is such user"
    }else{
       render "There is no such user"
    }
}

Я могу успешно пройти аутентификацию с использованием метода SpringSecurityUtils.reauthenticate (имя пользователя, пароль), только если я создал пользователей на стороне клиента

Может ли кто-нибудь в деталях помочь мне понять, как я должен реализовать плагин работает на стороне клиента (без базы данных) ...?

1 Ответ

0 голосов
/ 28 октября 2011

Я довольно новичок в Grails, так что, возможно, я далеко от базы, но я подозреваю, что ваша проблема, возможно, связана с тем, как вы кодируете пароль при создании пользователя.Делаете ли вы то же самое, когда создаете пользователей, используя «клиентскую часть», по сравнению с тем, какой другой метод вы используете?

Например, когда я впервые начал использовать плагин spring-security-ui, я создал пользователейс утилитой, которая входит в комплект, и все они не смогли войти в систему. Если я правильно понимаю, ядро ​​spring-security было обновлено начиная с spring-security-ui, что переместило необходимость кодировать пароль в контроллерах в пределах Userсам.Например, в Spring-security-ui UserController.save (), который поставляется с этим плагином, это происходит:

if (params.password) {
    String salt = saltSource instanceof NullSaltSource ? null : params.username
    user.password = springSecurityService.encodePassword(params.password, salt)
}

Но мой класс User имеет это (прямо из примеров плагинов s2)

def beforeInsert() {
    encodePassword()
}

def beforeUpdate() {
    if (isDirty('password')) {
        encodePassword()
    }
}

protected void encodePassword() {
    password = springSecurityService.encodePassword(password)
}

Поскольку мой класс User управляет самим кодированием, произошла двойная кодировка, которая вызывала сбой при входе в систему, которые были созданы с ним.Может ли что-то подобное происходить в вашем приложении?Когда вы создаете пользователей не на стороне клиента, вы кодируете таким же образом?

...