Я делаю приложение для входа пользователя. В этом файле AuthenticationService
я общаюсь с контроллером C#.
export class AuthenticationService {
constructor(private http: HttpClient) { }
readonly APIUrl = 'https://localhost:44309/api';
isAuthorized:any;
Login(val:any){
return this.http.post(this.APIUrl+'/Login', val);
}
Authorize(isAuthorized:boolean)
{
this.isAuthorized = isAuthorized;
}
}
В этом файле LoginComponent
я вызываю метод Login()
в AuthenticationService
, поэтому проверка данных пользователя происходит в бэкэнде.
export class InloginComponent implements OnInit {
constructor(private Auth : AuthenticationService, private router: Router) { }
formModel = {
Email: '',
Password: ''
}
GebruikerList:any;
geb:any;
isAuthorized: any;
ngOnInit(): void {
}
Login()
{
this.geb = {
Email: this.formModel.Email,
Wachtwoord: this.formModel.Password
}
this.Auth.Login(this.geb).subscribe(data => this.isAuthorized = data)
this.Auth.Authorize(this.isAuthorized);
if (this.isAuthorized) { this.router.navigate(['profile'])}
}
}
После проверки возвращается либо true
, либо false
.
Когда это true
, пользователь должен перейти на страницу профиля. Login()
кстати привязан к кнопке входа. Проблема в том, что мне нужно дважды нажать кнопку «Войти» (когда данные пользователя действительны), чтобы перейти на страницу. Почему это происходит?
поток кажется правильным, но измените его. когда вы нажимаете второй раз, isAuthorized становится истинным из-за предыдущего ответа API, поэтому щелчок во второй раз работает попробуй это:
this.Auth.Login(this.geb).subscribe(data => {
this.isAuthorized = data
this.Auth.Authorize(this.isAuthorized);
if (this.isAuthorized) { this.router.navigate(['profile'])}
}
Вы должны поместить свою навигационную строку
router
внутрьdata => ....