使用Web API的离子登录系统(基于令牌)

时间:2019-02-14 11:27:44

标签: angular ionic4

enter image description here我正在制作要在其中创建登录系统的照片共享应用。登录时出现错误,如找不到值。在服务中,我正在获取价值。请帮助我如何在login.page.ts中获取电子邮件和密码,以下是我的代码:。

login.page.ts

import { Component, OnInit } from '@angular/core';
import { NavController, MenuController, ToastController, AlertController, LoadingController } from '@ionic/angular';
import { Router, ActivatedRoute } from '@angular/router';
import { User } from '../user';
import { first } from 'rxjs/operators';
import { UserService } from '../user.service'
import { Validators, FormBuilder, FormGroup, FormControl } from '@angular/forms';
@Component({
  selector: 'app-login',
  templateUrl: './login.page.html',
  styleUrls: ['./login.page.scss'],
})
export class LoginPage implements OnInit {
  public onLoginForm: FormGroup;
  submitted = false;
  constructor(public navCtrl: NavController,
    public menuCtrl: MenuController,
    public toastCtrl: ToastController,
    public alertCtrl: AlertController,
    public loadingCtrl: LoadingController,
    private formBuilder: FormBuilder,
    private userService: UserService,
    public router: Router) {

  }

  ionViewWillEnter() {
    this.menuCtrl.enable(false);
  }

  ngOnInit() {
    this.onLoginForm = this.formBuilder.group({
      'email': [null, Validators.compose([
        Validators.required,
        Validators.pattern('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$')
      ])],
      'password': [null, Validators.compose([
        Validators.required,
        Validators.pattern('^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]+$')
      ])]
    });
  }
  onSubmit() {
    this.submitted = true;
    console.log(this.onLoginForm.value);
    this.userService.login(this.onLoginForm.email.value,
      this.onLoginForm.password.value)
      .pipe(first())
      .subscribe(
        data => {
          if (data.status === false) {
            alert("Please enter valid Email Or Password");
            this.router.navigate(['login']);

          }
          else {


            this.router.navigate(['blog-list']);

          }
        }
      );
  }


}

下面是我在调用laravel-passport api的用户服务。

user.service.ts

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import {User} from './user';
import { map } from 'rxjs/operators';
import { HttpHeaders } from '@angular/common/http';

@Injectable({
  providedIn: 'root'
})
export class UserService {
  token: any;
  constructor(private http: HttpClient) { }

  register(user: User) {

    return this.http.post(`http://localhost:8000/api/register`, user);
  }

  login(email: string, password: string) {

    return this.http.post<any>(`http://localhost:8000/api/login`, { email, password })
      .pipe(map(user => {
        return user;
      }));
  }
}

1 个答案:

答案 0 :(得分:2)

建立时,您的值在onLoginForm.value中。因此,如果要访问emailpassword的值,则需要使用...

this.onLoginForm.value.email;
this.onLoginForm.value.password;

另一个选择是使用:

this.onLoginForm.get('email').value
this.onLoginForm.get('password').value