基本的に、私は管理者とユーザーでロールベースのログインシステムを作成しました。ログインしようとすると、ユーザー アクセス トークンが常に 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);
  }
この問題のため、ログインできません。