angular - 离子保持登录
问题描述
看,我的 ionic 项目中有一个页面,它是一个简单的登录表单,用户在其中输入其 CPF,然后重定向到将创建新密码或键入现有密码的页面。哪个是问题?如果用户尝试访问home.page
登录前,我做了一个简单的路由保护阻止用户
授权登录.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;
}
}
守卫工作得很好。
问题是什么?我如何让这个用户保持登录状态?因为此时,用户每次打开应用程序时都必须登录。
解决方案
loaclStorage API 已经可用,所以在方便保存信息的地方,您需要做的就是:
localStorage.setItem('logged_in', true); // or false
并使用以下方法检索值:
localStorage.getItem('logged_in'));
据推测,您将在确认密码时保存它,并在登录屏幕加载时或之前检索。
还有其他处理会话的方法比这更好,但作为一种简单易用的方法,以上就是它的全部内容。
推荐阅读
- sql - 获取从星期四开始的周开始/结束日期和周数
- r - 使用 R for 循环更新数据框中的列值
- javascript - Bootstrap-select & Vue.js: selectpicker('refresh') 不工作
- javascript - Javascript:将同一项目多次放入数组中的最简单方法是什么?
- regex - 正则表达式在单词前包含可选换行符
- reactjs - 使用 React 时如何将 react-particles-js 设置为背景?
- ruby-on-rails - 如何在 Rails 的管理部分正确使用“link_to”
- c++ - C ++在互斥锁中记录源位置
- ansible - 使用 Ansible 连接文件
- discord.js - 如何添加显示一个人等级的进度条