Erro ao passar parametros?
13/11/2013 10:50
0
Olá pessoal, estou iniciando com Grails e peguei um projeto, tô tentando efetuar o login mas ele sempre retorna um erro, realizei algumas pesquisa na web mas nenhum sucesso ainda. Alguma dica?

Mensagem de erro:

| Error 2013-11-13 10:28:48,996 [http-bio-8080-exec-4] ERROR errors.GrailsExceptionResolver - MissingMethodException occurred when processing request: [POST] /freako/usuario/login - parameters:
login: iranvital
senha: iranvital
No signature of method: freako.Usuario.findByLoginAndSenha() is applicable for argument types: (java.lang.String, [B) values: [iranvital, [55, 100, 111, 50, 66, 103, 56, ...]]
Possible solutions: findByLoginAndSenha([Ljava.lang.Object;). Stacktrace follows:
Message: No signature of method: freako.Usuario.findByLoginAndSenha() is applicable for argument types: (java.lang.String, [B) values: [iranvital, [55, 100, 111, 50, 66, 103, 56, ...]]
Possible solutions: findByLoginAndSenha([Ljava.lang.Object;)
Line | Method
->> 111 | methodMissing in org.grails.datastore.gorm.GormStaticApi
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 28 | doCall in freako.UsuarioController$_closure1
| 195 | doFilter . . in grails.plugin.cache.web.filter.PageFragmentCachingFilter
| 63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter
| 1145 | runWorker . . in java.util.concurrent.ThreadPoolExecutor
| 615 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 722 | run . . . . . in java.lang.Thread


Meu formulário:

<g:form name="formLogin" url="[controller:'usuario', action:'login']" >
Login:<input type="text" name="login" /><br />
Senha:<input type="password" name="senha" /><br />
<input type="submit" value="Entrar" />
</g:form>


Meu UsuarioController

def login = {

def loginUsuario = params["login"]
def senhaUsuario = params.senha

def usuario = Usuario.findByLoginAndSenha(loginUsuario, senhaUsuario.encodeAsPassword())

if (usuario) {
session["usuario"] = usuario
redirect(action:"lista", controller:"link")
} else {
render("Usuario não encontrado no sistema!")
}
}
Tags: grails


0
Cara, sou novo no Grails tbm, mas não seria correto chamar o params["login"] dessa forma -> params.login ?
No caso do def loginUsuario = params["login"] ele está pegando um "objeto" e o erro diz isso, que se espera uma String e vc está passando um Object. Da uma olhada ai.
13/11/2013 11:12


0
G13ydson fiz como voc? comentou mas o erro pessiste.

13/11/2013 12:40


0
Tentei também da seguinte forma:


def login = {
def usuario = Usuario.findByLoginAndSenha(params.login, params.senha.encodeAsPassword())

if (usuario) {
session["usuario"] = usuario
redirect(action:"lista", controller:"link")
} else {
render("Usuario não encontrado no sistema!")
}
}


mas o erro continua:
| Error 2013-11-13 12:45:50,358 [http-bio-8080-exec-4] ERROR errors.GrailsExceptionResolver  - MissingMethodException occurred when processing request: [POST] /freako/usuario/login - parameters:
login: iranvital
senha: iranvital
No signature of method: freako.Usuario.findByLoginAndSenha() is applicable for argument types: (java.lang.String, [B) values: [iranvital, [55, 100, 111, 50, 66, 103, 56, ...]]
Possible solutions: findByLoginAndSenha([Ljava.lang.Object;). Stacktrace follows:
Message: No signature of method: freako.Usuario.findByLoginAndSenha() is applicable for argument types: (java.lang.String, [B) values: [iranvital, [55, 100, 111, 50, 66, 103, 56, ...]]
Possible solutions: findByLoginAndSenha([Ljava.lang.Object;)
Line | Method
->> 111 | methodMissing in org.grails.datastore.gorm.GormStaticApi
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 26 | doCall in freako.UsuarioController$_closure1
| 195 | doFilter . . in grails.plugin.cache.web.filter.PageFragmentCachingFilter
| 63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter
| 1145 | runWorker . . in java.util.concurrent.ThreadPoolExecutor
| 615 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 722 | run . . . . . in java.lang.Thread
13/11/2013 12:47


0
Pessoal encontrei o erro agora ainda não sei como solucionar.
o erro acontece quando chama o "encodeAsPassword" retirei ele e cadastrei uma senha não criptografada, por regra de segurança tem que funcionar, se alguém tiver uma dica?

trecho:
def usuario = Usuario.findByLoginAndSenha(loginUsuario, senhaUsuario.encodeAsPassword())
13/11/2013 17:09


0
Posta as assinaturas do métodos ai.
13/11/2013 18:23


0
Eu consigo salvar a senha criptografada no banco de dados agora, quando tento logar chamando o "encodeAsPassword()" gera o erro acima.

O arquivo PasswordCodec.groovy que fica na pasta utils

package freako

import java.security.MessageDigest
import org.apache.commons.codec.binary.Base64

class PasswordCodec {

static encode = { String s ->
MessageDigest md = MessageDigest.getInstance('SHA')
md.update s.getBytes('UTF-8')
Base64.encodeBase64 md.digest()
}

}


Minha classe domain Usuario.groovy

package freako

class Usuario {

String login
String hashSenha
String email
String senha

void setSenha(String valor){
this.senha = valor
if(valor != null){
this.hashSenha = valor.encodeAsPassword()
}
}

static transients = ['senha']

static hasMany = [links:Link]

static constraints = {
login(nullable:false,blank:false,unique:true)
hashSenha(nullable:false,blank:false)
email(email:true)
}

String toString() {
"${this.login}"
};
}



15/11/2013 21:54



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