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