Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Login e logout nao funcionam

Terminei a aula 4, porém estou com dois erros no meu projeto. o Primeiro está aparecendo

HTTP Status 405 - Request method 'GET' not supported

type Status report

message Request method 'GET' not supported

description The specified HTTP method is not allowed for the requested resource.

Apache Tomcat/8.0.32

quando vai para a pagina de login

o outro erro é na hora de construir o logout

.and().logout().logoutRequestMatcher((new AntPathMatcher("/logout"));

o logoutRequestMatcher aparece com erro e o Eclipse me sugere fazer um cast ou mudar o metódo.

Alguém com esses problemas também?

8 respostas

Boa tarde Frederick,

Este erro acontece quando você tenta acessar qualquer pagina da aplicação?

Coloca aqui também como esta esse seu método configure completo e algum erro que tenha no console quando você acessa a pagina (caso tenha )

Boa tarde Fillipe, desculpe a demora mas estava em viagem...

O erro 405 somente nas páginas que necessitam autenticação pois redireciona para a página de login.

Na verdade do EnableWebMvcSecurity está sendo mostrado como deprecated.

O erro do logout ele não acha o método logoutRequestMatcher(), o eclipse mostra o seguinte erro

...
import 
 org.springframework.security.config.annotation.web.servlet.conf
 iguration.EnableWebMvcSecurity;
import 
 org.springframework.security.crypto.bcrypt.BCryptPasswordEnco
 der;
import 
 org.springframework.security.web.util.matcher.RequestMatcher;
import org.springframework.util.AntPathMatcher;
...
.and().formLogin().loginPage("/login/").permitAll()
.and().logout().logoutRequestMatcher((RequestMatcher) new 
 AntPathMatcher("/logout");
}

Frederick, O que estou vendo de diferente em relação ao meu é que no seu login tem um / no final e o seu logout esta dando new no método errado..

.and().formLogin().loginPage("/login").permitAll()
.and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout"));

da uma olhada se trocando isso funciona..

referente ao EnableWebMvcSecurity estar como deprecated, é que ele foi substituído na versão mais nova do Spring security. Pode mudar para EnableWebSecurity que funciona normalmente. Comigo aqui não precisei alterar mais nada.

solução!

Outra coisa,

no seu LoginController você especificou o @RequestMapping como sendo só para GET?

@RequestMapping(value="/login", method=RequestMethod.GET)
    public ModelAndView login() {

            ModelAndView model = new ModelAndView("login");

            ...

            return model;

    }

não lembro se é exatamente assim que está no curso, pois modifiquei um pouco o meu.. mas o RequestMapping é importante estar certo.

Oi Fillipe,

qto ao logout copiando as suas linhas funcionou, comparei aqui e só o / no final do login estava diferente.. mas enfim, o importante é funcionar Troquei o método para EnableMvcSecurity. Lá no Request estava POST realmente, por isso o erro. Mas agora não consigo fazer a autenticação mais, coloco o login e senha e me redireciona para http://localhost:8080/casadocodigo/login?error no console aparece

Hibernate: select usuario0_.email as email1_3_, usuario0_.nome as nome2_3_, usuario0_.senha as senha3_3_ from Usuario usuario0_ where usuario0_.email=?

colando essa linha no console do MySQL e trocando o ? pelo email cadastrado, tenho retorno de uma linha do user cadastrado

Eita

Nessa linha do console mostra somente que ele fez uma busca no banco. Faz um teste. configura para o Spring usar a pagina de login embutida nele.

.and().formLogin().permitAll() //acho que é isso.. faz tempo que fiz

Se com a pagina do proprio spring funcionar, provavelmente tem algo errado no seu formulário de login. Caso de o erro na pagina do spring também, ai vai ser algo de configuração. Talvez no modelo do usuário. Mas fala o erro que aparecer ai.

Obrigado Fillipe, coloquei a pagina do Spring e funcionou, estou revendo aqui o form e model do Login/Usuario para arrumar. Pode colocar como resolvido o tópico

Por nada Frederick. Qualquer coisa mais pode perguntar ai.

Abraço

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software