Как найти конкретную строку из значений массива firestorage, используя функцию if & for - PullRequest
0 голосов
/ 07 октября 2019

Я получаю массив из FireStorage, используя машинопись. Ниже приведен мой код login.component.ts. Я хочу удалить существующий код из функции login: void () и вместо этого добавить код, который проверяет и сопоставляет значение users (имя пользователя и пароль) из массива «users: User []». Если имя пользователя и пароль найдены, они продолжат работу, в противном случае перейдут к функции else. Функция getUsers () внутри ngonInit выбирает пользователей из firestorage

LOGIN.COMPONENT.TS

import { Component, OnInit } from '@angular/core';
import {Router} from '@angular/router';
import {MatDialog} from '@angular/material';
import { UserService } from '../service/user.service';
import { User } from '../models/user';
@Component({
  selector: 'app-login',
  templateUrl: './login.component.html',
  styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {
  users: User[];
  constructor(private router: Router, private userService: UserService) { }
username: string;
password: string;
  ngOnInit() {
    if(localStorage.getItem('logkey')=='1') {
      this.router.navigate(["app1"]);   
    }
    this.userService.getUsers().subscribe(users => {
      //console.log(users);
      this.users = users;
    });
  }
  login() : void {
    if(this.username == 'aayush' && this.password == 'demo'){
     localStorage.setItem('logkey',"1");
     localStorage.setItem('loguser',this.username);
     this.router.navigate(["app1"]);
    }
    else if(this.username == 'admin' && this.password == 'admin'){
     localStorage.setItem('logkey',"1");
     localStorage.setItem('loguser',this.username);
     this.router.navigate(["app1"]);
    }
    else {
      alert("Invalid credentials");
    }
  }
}

1 Ответ

1 голос
/ 07 октября 2019

Я не буду рекомендовать фильтровать пользователя на стороне пользовательского интерфейса (поскольку это явно уязвимость системы безопасности), вместо этого вам следует снова фильтровать и извлекать записи, чтобы проверить, существует ли пользователь. До сих пор, если вы хотите это сделать, вы можете использовать Array.find илиArray.some метод, чтобы проверить, существует ли пользователь. Так что ваш код будет выглядеть так: -

var userExist=this.users.some(u=> u.username == this.username && u.password==this.password)
 if(userExist){
     localStorage.setItem('logkey',"1");
     localStorage.setItem('loguser',this.username);
     this.router.navigate(["app1"]);
    }
    else {
//your code

вот пример, если вы хотите фильтровать на стороне API

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...