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

Login com post e response

Estou com um problema ao realizar login em um servidor, este servidor está configurado com API REST do Codeigniter. Estou usando auth-service mas acredito que está depreciado.

Gostaria de saber se o meu código está com a solução correta, o mesmo está realizando o login com apenas um usuário, e está me dando a resposta como ok e id_processo que preciso usar na página HomePage. Segue link da imagem com o login e a resposta, nessa imagem com o id e senha que estou passando eu recebo a resposta e não está redirecionando para minha página HomePage. https://i.stack.imgur.com/AZabg.png Segue código abaixo do login.ts e auth-service.ts

login.ts

import { Component } from '@angular/core';
import { NavController, LoadingController, ToastController } from 'ionic-angular';
import { AuthService } from '../../providers/auth-service/auth-service';
import { HomePage } from '../home/home';


@Component({
  selector: 'page-login',
  templateUrl: 'login.html'
})
export class LoginPage {

  loading: any;
  loginData = { login:'', senha:'' };
  data: any;

  constructor(
    public navCtrl: NavController,
    public authService: AuthService,
    public loadingCtrl: LoadingController,
    private toastCtrl: ToastController
  ) {}

  doLogin() {
    console.log(this.loginData.login);
    console.log(this.loginData.senha);

    this.showLoader();
      this.authService.login(this.loginData).then((result) => {
      this.loading.dismiss();
      this.data = result;
      localStorage.setItem('token', this.data.access_token);
      this.navCtrl.setRoot(HomePage);
    }, (err) => {
      this.loading.dismiss();
      this.presentToast(err);
    });
  }


  showLoader(){
    this.loading = this.loadingCtrl.create({
        content: 'Autenticando aguarde...'
    });

    this.loading.present();
  }

  presentToast(msg) {
    let toast = this.toastCtrl.create({
      message: msg,
      duration: 3000,
      position: 'bottom',
      dismissOnPageChange: true
    });

    toast.onDidDismiss(() => {
      console.log('Dismissed toast');
    });

    toast.present();
  }

}

auth-service.ts

import { Injectable } from '@angular/core';
import { Http, Headers } from '@angular/http';
import 'rxjs/add/operator/map';


let apiUrl = 'http://appautoescola.com.br/unici_restserver/api/login';


export class User {
  login: string;
  senha: string;

  constructor(login: string, senha: string) {
    this.login = login;
    this.senha = senha;
  }
}

@Injectable()
export class AuthService {

  constructor(public http: Http) {}

  login(credentials) {
    return new Promise((resolve, reject) => {
        let headers = new Headers();
        headers.append('Content-Type', 'application/json');
        //headers.append('Content-Type', 'multipart/form-data');

        this.http.post(apiUrl, JSON.stringify(credentials), {headers: headers})
          .subscribe(res => {
            resolve(res.json());
          }, (err) => {
            reject(err);
          });
    });
  }

  logout(){
  return new Promise((resolve, reject) => {
      let headers = new Headers();
      headers.append('X-Auth-Token', localStorage.getItem('token'));

      this.http.post(apiUrl, {}, {headers: headers})
        .subscribe(res => {
          localStorage.clear();
        }, (err) => {
          reject(err);
        });
  });
}
}
2 respostas

Faala Isaac, tudo bom cara ?

Vamos lá, se o seu login já está funcionando a implementação está correta :) Não existe um padrão universal de código para fazer. O importante é o código ficar fácil para você dar manutenção e oferecer o que o usuário precisa

Espero ter ajudado \o

solução!

Obrigado Mario pela resposta, fato é que esse código está funcionando apenas para um código de login, não possibilitando outros usuários terem acesso. Quando tento fazer login com outros usuários ele da o seguinte erro:

ERROR SyntaxError: Unexpected token < in JSON at position 0
    at JSON.parse (<anonymous>)
    at Response.Body.json (http.es5.js:800)
    at SafeSubscriber._next (auth-service.ts:32)
    at SafeSubscriber.__tryOrUnsub (Subscriber.js:238)
    at SafeSubscriber.next (Subscriber.js:185)
    at Subscriber._next (Subscriber.js:125)
    at Subscriber.next (Subscriber.js:89)
    at XMLHttpRequest.onLoad (http.es5.js:1229)
    at t.invokeTask (polyfills.js:3)
    at Object.onInvokeTask (core.es5.js:4140)