The webpage has resulted in too many redirects
08/01/2012 20:09
1
Boa tarde,

Estou fazendo a segurança em filtros no Grails 2.0.0, mas estou tendo um erro conforme abaixo:

This webpage has a redirect loop
The webpage at http://localhost:8080/hubbub/login/form has resulted in too many redirects. Clearing your cookies for this site or allowing third-party cookies may fix the problem. If not, it is possibly a server configuration issue and not a problem with your computer.
Here are some suggestions:
Reload this webpage later.
Learn more about this problem.
Error 310 (net::ERR_TOO_MANY_REDIRECTS): There were too many redirects.

Fiz o filtro da seguinte forma:

def filters = {

loginCheck(controller: '*', action: '*') {
before = {

if (!controllerName) return true

if (!session.user) {
redirect(controller: 'login')
return false
}
}

after = { model ->
}

afterView = {
log.debug "Finished running ${controllerName} - ${actionName}"
}

}

}


Uma parte do controller "login" está assim:

static defaultAction = 'form'

/*
* redirecionar para formulário de login
*/
def form = {
}

Quando eu altero o filtro, especificando o controlador, o erro não ocorre.
Erro quando eu deixo o filtro assim : loginCheck(controller: '*', action: '*')
Não ocorre o erro quando deixo o filtro assim : loginCheck(controller: 'post', action: '*')

Alguém pode me ajudar com estas informações que postei?
Tags: Filters


-1
Saindo da sua pergunta... não sei se vc tem necessidade de fazer um sistema de login do 'zero', caso não precise eu recomento o uso do:
http://grails.org/plugin/spring-security-core
09/01/2012 13:45


0
Oi Gustavo,

muitas vezes é mais interessante desenvolver o próprio sistema de autenticação mesmo. Aproveitando o ponto do Castiel, o Grails Brasil, por exemplo, não usa o spring-security-core, porque nossas necessidades eram bem mais simples (e o sistema não tinha muitas permissões além do "logado", "não logado").

Gustavo, o problema no seu filtro é que você deve incluir a action login na lista de endereços que "retornam true". Caso contrário, não conseguirá fazer o login direito.


0
Ainda sobre a sua dúvida. É interessante observar o loop Gustavo.

Repare: caso não esteja logado, você faz o redirect para a action login. Como o usuário não está logado, você manda redirecionar de novo pra mesma action e por ai vai até o fim dos tempos.

Vai gerar uma espécie de "stack overflow" que resulta no "too many redirects".


0
Boa tarde,

Referente a desenvolver ou não o controle de usuário do zero, já utilizei o Spring Security e também o Shiro, mas o que estou querendo é algo muito simples, então não vi a necessidade. Também estou fazendo esta aplicação no Grails 2.0.0 e antes eu utilizava este tipo de controle no Grails 1.3.7.
Referente ao Action login, eu tenho um controller login com uma action default "form", que é chamada no redirect quando eu passo apenas o controller.
O problema que quando eu defino um controller, por exemplo controller: 'post' ou controller: 'user', como parâmetro de filtro, o sistema está se comportando correto, mas quando eu defino todos os controllers, por exemplo controller: '*' o sistema entra em loop. Isto que não entendi.
Eu estou tendo que fazer um filtro para cada controle para resolver e não ficar parado :(
09/01/2012 19:05


1
Oi Gustavo,

neste caso, sabe qual é uma estratégia bastante interessante? Você criar uma estrutura no seu filtro baseada em mapas e listas que contenha todas aquelas actions que são de livre acesso, como no código abaixo:


def livre_acesso = [
"autenticador":["login", "logout", "form"],
"info":["list", "info"]
]


E, antes de executar se o usuário está autenticado ou não pela session, ver se você está acessando uma action/controller de livre acesso. Se for o caso, retorne true e morreu o problema.


0
Obrigado Henrique, seu último post me fez entender o erro.
Como eu não estava tratando o controller login, o sistema entrava em Loop toda vez que tentava acessar as actions dele.
Fiz um simples tratamento e já resolveu.
Vlw galera pela ajuda.
10/01/2012 00:45


0
Olá estou com o mesmo problema, mas estou usando o spring-security-core.

Tentei criar um filtro, mas não consegui. Usei o interceptUrlMap no config.groovy assim:

interceptUrlMap = [

'/login/**': ['IS_AUTHENTICATED_ANONYMOUSLY'],
'/**': ['IS_AUTHENTICATED_FULLY']

]

E não tive sucesso. Sei que é um loop isso, mas não consigo identificar onde está acontecendo, pois como sou novo no grails tenho certa dificuldade em mapear as actions...


alguém pode ajudar?
02/08/2012 20:14



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