3
respostas

Curso Ionic - GET https://aluracar.herokuapp.com/login 403 (Forbidden)

Ao fazer o get recebo o erro 403 forbidden. Ao acessar a url "https://aluracar.herokuapp.com/login" é retornado as seguintes informações: {"mensagem":"Usuário não cadastrado!"}

Utilizei o login e senha: "joao@alura.com.br" "alura123"

3 respostas

Eu fiz um Ionic Serve no projeto do curso, testei com a senha que você passou e o login está OK. O que pode estar acontecendo é que os dados de login não estão sendo enviados para a página. Se você acessa direto esse link, vai dar exatamente este erro.

Segue abaixo os meus arquivos, talvez tenha faltando alguma coisa:

service.js

angular.module('starter')
.service('CarroService', function($http){

    var url = 'https://aluracar.herokuapp.com/';

    return{
        obterCarros : function(){
            return $http.get(url).then(function(response){
                return response.data;

            });
        }, 
        salvarPedido : function(pedido){
            return $http.get(url + "salvarpedido" , pedido).then(function(response){
                return "Deu certo.";
            });
        },

        realizarLogin: function(dadosDoLogin){
            return $http.get(url + "login" , dadosDoLogin).then(function(response){
                return response.data;
            });
        }
    }

});

controller.js (apenas a parte de login)

angular.module('starter')
.controller('loginController', function($scope, CarroService, $ionicPopup, $state, $rootScope){
    $scope.login = {};
    $scope.realizarLogin = function(){
        ///alert($scope.login.email);
        var dadosDoLogin = {
            params : {
                email : $scope.login.email,
                senha : $scope.login.senha
            }
        }
        CarroService.realizarLogin(dadosDoLogin).then(function(dados){
            $rootScope.usuario = dados.usuario;
            //$state.go('listagem');
            //if(dados.status === 200){
                $ionicPopup.alert({
                    title: 'Seja bem-vindo',
                    template: 'Login efetuado com sucesso.'
                });
                $state.go('app.listagem');
            //}
        }, 
        function(erro){
            $ionicPopup.alert({
                title: 'Opa!',
                template: 'Email ou senha incorretos'
            });

        });
    }

});

login.html

<ion-view>
    <ion-header-bar>
        <h1>Olá, faça seu login</h1>
    </ion-header-bar>

    <ion-content>

    <div class="list">
     <form ng-submit="realizarLogin()">
      <label class="item item-input">
        <span class="input-label">Email</span>
        <input type="text" placeholder="E-mail" ng-model="login.email">
      </label>
      <label class="item item-input">
       <span class="input-label">Senha</span>
        <input type="password" placeholder="Senha" ng-model="login.senha">
      </label>
      <button class="button button-block button-positive" type="submit">Entrar</button>
    </div>
    </form>
    </ion-content>
</ion-view>

Vc tem q passar os parametros na URL caso queira fazer uma chamada GET usando um browser:

https://aluracar.herokuapp.com/login?email=joao@alura.com.br&senha=alura123

E pela aplicação vc tem q fazer igual o Daniel falou.

No meu caso, o problema foi ter usado o autocomplete do eclipse, ao invés de params:{} ele criou Param:{} fazendo com que os dados nao fossem enviados.