Я новичок в Angular здесь, и тренируюсь в Angular 6 с .Net Core.
У меня это работало в начале недели, и я не уверен, где это сломал.
Я написал службу аутентификации, которая работает, она вызывает контроллер и возвращает пользователя, но в компоненте, который вызывает службу, я не могу получить подписку на вызов router.navigate.
Я просто не совсем понимаю, как использовать Observable, или мне это нужно здесь. Он работал нормально, пока я не добавил localStorage и не написал куки.
Я пытался удалить новый материал, который я добавил, но без изменений. компонент не будет обрабатывать результат для навигации. При подписке у меня был результат .subscribe(_result => this.router.navigate(['/admin/dashboard'])
, но я получил сообщение об ошибке машинописного текста. Поэтому я удалил его.
Мой компонент входа, а следующий блок - мой Auth.Service, который выполняет вызов http.post.
onSubmit() {
this.authService.Authenticate(this.model)
.pipe(first())
.subscribe(
_data => {
this.router.navigate(['/admin/dashboard'])
},
error => {
console.log('Authentication process failed')
this.model.Error = error;
this.authFailure = true;
}
);
}
Authenticate(signIn: SignIn) {
let authenticateUrl = this.configuration.Server + 'api/auth/Authenticate';
const toSignIn = JSON.stringify(signIn);
return this.http.post<SignIn>(authenticateUrl, toSignIn, { headers: this.headers })
.pipe(
map(result => {
if (result && result.Token) {
// Store user details and the jwt token
localStorage.setItem('accessToken', result.Token);
localStorage.setItem('userName', result.Username);
localStorage.setItem('name', result.Firstname + ' ' + result.Lastname);
this.authCookie.writeAuthCookies(result);
}
return result;
})
);
}
canActivate(_next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
if (this.cookieAuth.readTokenOrCookie() === false) {
// Redirect the request to signIn
this.router.navigate(['/home/signin'], { queryParams: { return: state.url } });
return false;
}
return true;
}