首页 > 其他分享 >Ionic 在 AuthGuard 中验证登录状态

Ionic 在 AuthGuard 中验证登录状态

时间:2024-05-17 09:43:21浏览次数:11  
标签:const 登录 storage import AuthGuard login Ionic StorageService

Ionic 在 AuthGuard 中验证登录状态

通过 ionic g service services/storage​ 创建 StorageService​ 管理存储相关的操作:

import { Injectable } from '@angular/core';

import { Storage } from '@ionic/storage-angular';

@Injectable({
  providedIn: 'root'
})
export class StorageService {
  private _storage: Storage | null = null;

  constructor(private storage: Storage) {
    this.init();
  }

  async init() {
    // If using, define drivers here: await this.storage.defineDriver(/*...*/);
    const storage = await this.storage.create();
    this._storage = storage;
  }

  // Create and expose methods that users of this service can
  // call, for example:
  public set(key: string, value: any) {
    this._storage?.set(key, value);
  }

  public checkLoginStatus(): Promise<any> {
    return new Promise((resolve) => {
        this.storage.get('token1').then(result => {
            if (result) {
                resolve(true);
            } else {
                resolve(false);
            }
        });
    });
  }
}

通过 ionic g guard guards/auth​ 生成 guard​ 文件:

import { CanActivateFn, Router } from '@angular/router';
import { StorageService } from '../services/storage.service';
import { inject } from '@angular/core';

export const authGuard: CanActivateFn = async (route, state) => {
    const router = inject(Router);
    const storage = inject(StorageService);
    const loginStatus = await storage.checkLoginStatus();
    if (!loginStatus) {
        router.navigate(['/login']);
    }
    return loginStatus;
};

需要验证登录状态的路由中添加 canActivate: [authGuard]​:

const routes: Routes = [
  {
    path: '',
    canActivate: [authGuard],
    loadChildren: () => import('./tabs/tabs.module').then(m => m.TabsPageModule)
  },
  {
    path: 'login',
    loadChildren: () => import('./login/login.module').then( m => m.LoginPageModule)
  }
];

参考文章:

Ionic 存储

ionic-storage

标签:const,登录,storage,import,AuthGuard,login,Ionic,StorageService
From: https://www.cnblogs.com/zhpj/p/18197222/ionic-verification-login-status-in-authguard-2mhwg

相关文章

  • bash脚本监控服务器SSH登录,每30分钟运行一次,发现登录发送到企业微信群
    //开始循环检测//loopCheck();//在每分钟的第30秒执行目标函数cron.schedule('358***',()=>{console.log('目标函数在8:35执行!');loopCheck_info();//在这里调用你想要定时执行的函数});cron.schedule('*/309-20***',()=>{con......
  • 登录宝塔面板提示参数格式错误解决方法
    问题描述:登录宝塔面板提示参数格式错误,如下图所示 解决方法:登录服务器SSH终端中执行下面命令(非面板终端)修复面板1.删除之前无法使用的面板环境(不会影响当前网站数据的使用)mv  /www/server/panel/pyenv /www/backup/pyenv2.重新获取新的面板环境和更新包curl http://dow......
  • 模拟浏览器登录页面中记录账号弹出选择框
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>PopupDivExample</title><s......
  • 登录拦截器
    对于管理系统或其他需要用户登录的系统,都需要登录验证,如果没有登录就不行进行相应的操作。SpringBoot通过实现HandlerInterceptor接口实现拦截器,通过实现WebMvcConfigurer接口实现一个配置类,在配置类中注入拦截器,最后再通过@Configuration注解注入配置。实现HandlerInt......
  • ssh免密登录本机设置
    设置SSH免密登录本机主要涉及生成密钥对、将公钥复制到本地(或远程服务器,如果是双向免密)以及测试免密登录等步骤。以下是一个基本的设置流程:生成密钥对:打开终端或命令提示符,并执行以下命令来生成RSA密钥对:ssh-keygen-trsa系统将会提示你指定保存密钥文件的路径和文件名。......
  • 使用命令登录harbor报错authentication required解决方法
    使用命令在终端登录harbor报错报错信息如下#dockerlogin192.168.3.61Authenticatingwithexistingcredentials...StoredcredentialsinvalidorexpiredUsername(admin):adminPassword:Errorresponsefromdaemon:Get"http://192.168.3.61/v2/":unauthorized:......
  • 【django学习-25】登录及使用中间件进行登录校验
    1.登录功能实现1.1:管理员表fromdjango.dbimportmodelsclassAdmin(models.Model):"""管理员"""username=models.CharField(verbose_name="用户名",max_length=32)password=models.CharField(verbose_name="密码......
  • 网站应用微信登录 DEMO
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>网站应用微信登录DEMO</title&g......
  • 网站应用微信登录 DEMO
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>网站应用微信登录DEMO</title&g......
  • vue---移动端登录页面
    最近在用vue做移动端,做了一个好看的移动端登录界面,保存一下,以后方便直接使用。具体代码:<template><divclass="main-login-container"><divclass="login-top"><imgclass="img":src="logintop"></div><divclass=&q......