GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Autenticação com api passport

laravel
php7
ionic
Tags: #<Tag:0x00007f37da493bf8> #<Tag:0x00007f37da493ab8> #<Tag:0x00007f37da493978>

#1

Bom dia! estou usando a api passport para autenticar o email e password com ionic, no postman a autenticação funciona perfeitamente mais na hora que testo pelo ionic da erro.
no postman fica assim:

No provider eu fiz:

export class AuthProvider {
 
    constructor(public http: Http) {
    }
 
    login(email: string, password: string) {
        return new Promise((resolve, reject) => {
            var data = {
                email: email,
                password: password
            };
            console.log(data);
            let headers = new Headers({'Content-Type': 'application/x-www-form-urlencoded'});
            this.http.post(`${Service.apiUrl}` + '/login', data,{
                headers: headers,
                method: "POST"
            })
                .subscribe((result: any) => {
                        resolve(result.json());
                    },
                    (error) => {
                        reject(error.json());
                    });
        });
    }
 
    register(user: any) {
        return this.http.post(`${Service.apiUrl}` + '/register', user).toPromise();
    }
 
}

Na classe eu chamo o provider:

export class LoginPage {
 
    model: User;
 
    constructor(
        public navCtrl: NavController,
        public navParams: NavParams,
        private authProvider: AuthProvider,
        private toast: ToastController
    ) {
        this.model = new User();
    }
 
    ionViewDidLoad() {
        console.log('ionViewDidLoad LoginPage');
    }
 
    login() {
        this.authProvider.login(this.model.email, this.model.password)
            .then((result: any) => {
                this.toast.create({
                    message: 'Usuário logado com sucesso.',
                    position: 'botton',
                    duration: 3000
                }).present();
                this.navCtrl.push(MinhaContaPage);
            })
            .catch((error: any) => {
                this.toast.create({
                    message: 'Erro ao efetuar login. Erro: ' + error.error,
                    position: 'botton',
                    duration: 3000
                }).present();
            });
    }
 
    openCriarConta() {
        this.navCtrl.push(CriarContaPage);
    }
 
}
 
export class User {
    email: string;
    password: string;
}

Já na api de autenticação eu fiz dessa maneira:

public function login(Request $request)
    {
        if (Auth::attempt([
            'email' => $request->get('email'),
            'password' => $request->get('password')
        ])) {
            $user = Auth::user();
            $success['token'] = $user->createToken('MyApp')->accessToken;
            return response()->json(['success' => $success], $this->successStatus);
        } else {
            return response()->json(['error' => 'Não autorizado'], 401);
        }
    }

Se o usuario não existe ele me retorna o erro 401, no meu caso o usuario existe no banco, tanto q no postman funciona perfeitamente. Queria saber pq não faz a autenticação pelo ionic!
o retorno o console fica assim:


Se alguém ajudar a desvendar agradeço de mais.