Usuário não é encontrado no banco de dados Spring Security Core Grails
17/05/2015 20:45
0
Estou utilizando o Groovy Grails para desenvolver um aplicação web e este sistema tem como plugin de segurança o Spring Security Core, tentando customizar o usuário já fornecido pelo Spring fiz como consta na Documentação, e minhas classes estão dentro da pasta service e estão dispostas da seguinte forma:

UserDetails.groovy

package test2import grails.plugin.springsecurity.userdetails.GrailsUser
import org.springframework.security.core.GrantedAuthority

class UserDetails extends GrailsUser {

final String nome
final String sobrenome

UserDetails(String username, String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired,
boolean accountNonLocked, Collection authorities, Object id, String nome, String sobrenome) {
super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities, id)
this.nome = nome
this.sobrenome = sobrenome
}
}


UserDetailsService.groovy

 package test2import grails.plugin.springsecurity.SpringSecurityUtils
import grails.plugin.springsecurity.userdetails.GrailsUserDetailsService
import org.springframework.dao.DataAccessException
import org.springframework.security.core.authority.GrantedAuthorityImpl
import org.springframework.security.core.userdetails.UserDetails
import org.springframework.security.core.userdetails.UsernameNotFoundException
import org.test2.security.User

class UserDetailsService implements GrailsUserDetailsService {

static final List NO_ROLES = [new GrantedAuthorityImpl(SpringSecurityUtils.NO_ROLE)]

@Override
UserDetails loadUserByUsername(String username, boolean loadRoles)
throws UsernameNotFoundException, DataAccessException {
return loadUserByUsername(username)
}

@Override
UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException {
User.withTransaction { status ->

User user = User.findByUsername(username)
if (!user) throw new UsernameNotFoundException(
'User not found', username)

def authorities = user.authorities.collect {
new GrantedAuthorityImpl(it.authority)
}

return new UserDetailsService(user.username, user.password, user.enabled,
!user.accountExpired, !user.passwordExpired,
!user.accountLocked, authorities ?: NO_ROLES, user.id,
nome, sobrenome)
}
}
}

Ainda tenho dentro do meu arquivo grails-app/conf/spring/resources.groovy a anotação do bean que é denotado a seguir:

beans = {    userDetailsService(test2.UserDetailsService)
}


A aplicação está compilando perfeitamente no entanto ao tentar logar digitando o username e senha tenho a seguinte mensagem de erro:

?

Imaginei que possivelmente não haveria em meu banco de dados um usuário cadastrado, no entanto ao fazer uma select na tabela usuário obtive o seguinte resultado:

?

Sou novo com o Spring, caso alguém saiba como me ajudar ou tiver alguma dica fico muito grato!
Tags: spring-security-core


0
Bom pessoal eu encontrei um erro no meu código mesmo assim ele não funciona, o erro era ao invés de retornar um 
return new UserDetailsService(... 
   O correto seria retornar um 
return new test2.UserDetails(... 
 No entanto mesmo assim o mesmo erro de usuário não encontrado persiste.
19/05/2015 19:38



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto