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

Erro 405 Method Not Allowed

Boa tarde,

Estou com o erro 405 que não consigo resolver, faço a requisição pelo angular para meu controller spring mas recebo esse erro.

Angular:

app.controller('forgotPassword', ['$scope', '$http', 'Notification',function($scope, $http, Notification) {

                $scope.trocaDeSenha = function() {
                    var email = $scope.email
                    console.log(email);
                    $http({
                        method : "POST",
                        url : "/recuperaSenha",
                        contentType : "application/json; charset=utf-8",

                        data : email,

                    }).success(function(data) {

                        Notification.success("Email enviado com sucesso");
                        $('.btn-close-modal-cadastro').click();

                    }).error(function(data) {

                        console.log(data.status);
                        $('.btn-close-modal-cadastro').click();
                        Notification.error("Não foi possivel enviar ");
                    })
                }

            }]);

Controller Spring:

@RequestMapping(value = "recuperaSenha", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

    public @ResponseBody String sendEmail(@RequestBody String email) {

        SimpleMailMessage message = new SimpleMailMessage();
    System.out.println("cheguei no controller da senha");
    System.out.println(email);
    User usuario = new User();

    usuario = dao.findbByEmail(email);
    System.out.println(usuario);



        message.setText("https://app-13-96-10020.ide.cronapp.io/#/recuperaSenhaView/token/?token=" + usuario.getHashRecover());
        message.setTo(email);
        message.setFrom("xxxxxxxxxxxxxxxxx");
        sender.send(message);
        return "{\"status\": \"ok\"}";
    }

classe de autorização de request do Spring:

@Component
public class SecurityPermission implements Permission {

    public static final String ROLE_ADMIN_NAME = "Administrators";

  @Override
  public void loadSecurityPermission(HttpSecurity http) throws Exception {

    // public
      http.authorizeRequests().antMatchers("/api/cronapi/**").permitAll();
      http.authorizeRequests().antMatchers("/auth/**").permitAll();
      http.authorizeRequests().antMatchers("/components/**").permitAll();
      http.authorizeRequests().antMatchers("/css/**").permitAll();
      http.authorizeRequests().antMatchers("/device/**").permitAll();
      http.authorizeRequests().antMatchers("/favicon.ico").permitAll();
      http.authorizeRequests().antMatchers("/adicionaUsuario").permitAll();
      http.authorizeRequests().antMatchers("/i18n/**").permitAll();
      http.authorizeRequests().antMatchers("/img/**").permitAll();
      http.authorizeRequests().antMatchers("/index.html").permitAll();
      http.authorizeRequests().antMatchers("/js/**").permitAll();
      http.authorizeRequests().antMatchers("/lib/**").permitAll();
      http.authorizeRequests().antMatchers("/recuperaSenha").permitAll();
      http.authorizeRequests().antMatchers("/recuperaSenhaView**").permitAll();
      http.authorizeRequests().antMatchers("/recuperaSenhaView/token/**").permitAll();
      http.authorizeRequests().antMatchers("/plugins/**").permitAll();
      http.authorizeRequests().antMatchers("/public/**").permitAll();
      http.authorizeRequests().antMatchers("/signin/**").permitAll();
      http.authorizeRequests().antMatchers("/views/error/**").permitAll();
      http.authorizeRequests().antMatchers("/views/login.view.html").permitAll();
      http.authorizeRequests().antMatchers("/views/public/**").permitAll();

Testando varias opções para descobrir o que acontece descobri o seguinte:

1- Se eu tiro a permissão na classe do Spring, ele retorna sucesso no controller do Angular, mas claro ele nao envia o email, mas ele não deveria dar o erro 404?

2- Eu posso apagar o meu controller Spring inteiro e ele continua dando o erro 405, não deveria dar o 404 de novo? pois eu nao tenho quem atenda essa requisição.

Se alguém souber de alguma coisa, ou ver algum detalhe que eu perdi, vou agradecer muito.

obrigado.

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
2 respostas

Tem bastante código.. .meu primeiro chute é que esse parametro email não está indo com um json válido... Talvez não fosse para retornar 405, mas talvez seja o código que o spring mvc decidiu para esses casos.

solução!

Alberto eu acho que descobri o que está acontecendo mas nao sei como resolver.

Quando eu subo o Toncat, por alguma motivo ele para de mapear o controller, pelo log consigo ver que ele mapeia assim:

 [ost-startStop-1] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]

Só que meus Controllers não estão no log, eles pararam de ser mapeados.

como eu resolvo isso?

obrigado.