0

基本的に、私は管理者とユーザーでロールベースのログインシステムを作成しました。ログインしようとすると、ユーザー アクセス トークンが常に null になり、その理由がわかりません。この問題を解決するのに 20 時間ほど費やしましたが、何も役に立ちません。どんな助けでも大歓迎です!

これが私のログイン方法です:

user = {
    email: '',
    password: ''
  };

login(){
    console.log(this.auth);
    this.auth.login(this.user).subscribe(user => {
      console.log('USER after login', JSON.stringify(user));
      if (user && user['role']) {
        let role = user['role'];
        if (role == 'ADMIN') {
          this.router.navigateByUrl('/admin-dashboard');
        } else if (role == 'USER') {
          this.router.navigateByUrl('/user-dashboard');
        } else {
          console.log('You are not authrnticated');
        }
      } else {
        console.log('Username Password combination not found');
        this.showWrongLoginAlert();
      }
    });
  }

私の認証サービス:

user!: Observable<any>;
  private currentUser: BehaviorSubject<any> = new BehaviorSubject(null);

  constructor(private router: Router, private storage: Storage) {
    this.loadUser();
    this.user = this.currentUser.asObservable().pipe(
      filter(response => response)
    );

  }

  loadUser() {
    this.storage.get(TOKEN_KEY).then(data => {
      if (data) {
        this.currentUser.next(data);
      } else {
        this.currentUser.next({ email: null, role: null });
      }
    });
  }

  

  login(credentials: any): Observable<any>{
    // eslint-disable-next-line prefer-const
    let email = credentials.email;
    // eslint-disable-next-line prefer-const
    let password = credentials.password;
    let user = null;

    if (email === 'admin' && password === 'admin') {
      user = { email, role: 'ADMIN' };
    } else if (email === 'user' && password === 'user') {
      user = { email, role: 'USER' };
    } else {

    }

    this.currentUser.next(user);
    this.storage.set(TOKEN_KEY, user);

    return of(user);
  }

この問題のため、ログインできません。

4

0 に答える 0