Problema com beforeInterceptor [RESOLVIDO]
17/08/2009 00:00
0
Galera estou com um probleminha aqui quando uso o beforeInterceptor.
Quando eu rodo a aplicação no servidor de desenvolvimento do próprio grails vai tudo beleza, porém quando rodo no tomcat com o .war acontece o seguinte erro de permissão para executar a sql que tem no action list:
URI: /Blogito/aluno/list
Exception Message: SELECT permission denied on object alunos, database aluno, owner dbo
Caused by: org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
Class: script1250175710105
At Line: [12]


O que não consigo entender é que, se eu to usando o beforeInterceptor, a sql do list nem deveria ser executada, não é mesmo?
Pois estou definindo que antes de qualquer ação, é para ser checado se o usuário tem permissão de acesso ao controller, da seguinte forma:

import groovy.sql.Sql

class CheckUserController {

def beforeInterceptor = [action:this.&checkUser]

def dataSource

def checkUser() {
if(session.uzer) {
if(!session.retorno){
Sql sql = Sql.newInstance(dataSource)
def rs = sql.rows("EXEC acesso_g..prograd_ACESSO_TELA 'PROGRAD-WEB', ${session.uzer}, ${controllerName}")

if(rs.retorno){
session.retorno = true
}
else{
flash.error = "Sem permissão de acesso à esta página!"
redirect(uri:"/fail.gsp")
}
}
}
else{
flash.error = "Você deve fazer o login primeiro!"
redirect(controller:'login', action:'index')
}
}

}


class AlunoController extends CheckUserController {
def scaffold = true
}


Enquanto sem ter feito o login, ta funcionando direitinho, quando eu tento ir pro aluno/list aparece a mensagem "Você deve fazer o login primeiro!".
Mas depois que eu faço login com um usuário que eu sei que não deve ter permição pra acessar o controller aluno, esse erro aparece.
Se eu aponto para o aluno/create, a msg "Sem permissão de acesso à esta página!" aparece, tudo certo, mas no list vem o erro.
Percebi que pela demora para executar a ação quando mando para o list, ele deve estar executando o select antes do beforeIntercept.

Alguém tem alguma ideia de como resolver isso?
Tags: Grails


0
Em ambiente de dev rola beleza, mas qual é o banco de dev? é o mesmo bando de prod?

SQL Grammar é provavelmente um problema entre o hibernate e o banco de prod.

[]s,
18/08/2009 00:00


0
Então Lucas, o banco é o mesmo pra todos os casos, dev, prod e test.
O erro acontece também no dev, só que não aparece em tela, só da pra ver pelo console do IDE que eu uso (netBeans).

Acabamos de resolver aqui..
O problema era +/- a lógica da ação do beforeInterceptor,
Eu mudei de "def CheckUser" para "boolean CheckUser" e acrescentei os return false/true onde deveria, agora não aparece mais o erro!

Obrigado pela atenção!
18/08/2009 00:00



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