看,我的离子项目中有一个页面,它是一个简单的登录表单,用户在其中输入其CPF,然后重定向到一个页面,在该页面中它将创建新密码或键入现有密码。
哪有问题如果用户试图在登录前访问home.page
,我就对其进行了简单的路由防护,阻止了用户
auth-login.service.ts
authenticatedUser: boolean;
private validatedPassword: number;
validatePassword(user, password) {
this.http
.get<RootObject>(
environment.url + environment.token + '&Metodo=alunoCheckPwd&AlunoIDMain=' + user.id + '&AlunoPwd=' + password
)
.subscribe(response => {
this.validatedPassword = response.LOGIN_SENHA.Password;
if (this.validatedPassword === 1) {
this.loggedIn();
} else {
alert('Invalid Password');
}
});
}
loggedIn() {
this.authenticatedUser= true;
this.router.navigateByUrl('/home');
}
userIsAuthenticated() {
return this.authenticatedUser;
}
auth-guard.ts
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot,
): Observable<boolean> | boolean {
if (this.authLoginService.userIsAuthenticated()) {
return true;
} else {
this.router.navigateByUrl('/login');
return false;
}
}
警卫工作得很好。
出什么问题了?我如何保持该用户登录?因为此时,用户每次打开应用程序时都必须登录。
答案 0 :(得分:0)
loaclStorage API已经可用,因此在方便保存信息时,您需要做的就是:
localStorage.setItem('logged_in', true); // or false
并使用以下方法检索值:
localStorage.getItem('logged_in'));
大概是在确认密码的那一刻保存此密码,并在登录屏幕加载时或在此之前的某个时候取回密码。
还有其他处理会话的方法要比这更好,但是作为一种简单易用的方法,以上已足够。