チュートリアル: パスキーを Angular に統合する方法

王林
リリース: 2024-08-28 06:10:36
オリジナル
1105 人が閲覧しました

Tutorial: How to Integrate Passkeys into Angular

TypeScript を使用した Angular でのパスキー認証の実装

このガイドでは、TypeScript を使用してパスキー認証を Angular アプリケーションに統合するプロセスについて説明します。パスキーはユーザー認証を管理するための安全かつスケーラブルな方法を提供し、従来のパスワードの必要性を排除します。

こちらの元のブログ投稿で完全なチュートリアルをご覧ください

前提条件

始める前に、Angular、HTML、CSS、TypeScript について十分に理解していることを確認してください。さらに、Node.js と NPM がマシンにインストールされていることを確認してください。このチュートリアルでは、Angular CLI のインストールをお勧めします:

npm install -g @angular/cli
ログイン後にコピー

Angular プロジェクトのセットアップ

まず、新しい Angular プロジェクトを作成しましょう。この例では、Angular バージョン 15.2.9 を使用しています:

ng new passkeys-demo-angular
ログイン後にコピー

セットアップ中に、次のオプションを選択します:

  • 仮名使用状況データの共有: いいえ
  • 角度ルーティング: はい
  • スタイルシート形式: CSS
  • SSR を有効にする: いいえ (アプリケーションでサーバー側レンダリングが必要な場合は、はいを選択します)

セットアップが完了したら、アプリケーションを実行してすべてが機能していることを確認します。

ng serve
ログイン後にコピー
ログイン後にコピー

パスキー認証のための Corbado の統合

1. Corbado アカウントをセットアップする

まず、Corvado 開発者パネルでアカウントを作成します。このステップでは、パスキーのサインアップを直接体験できます。登録後、製品として「Corvado Complete」を選択して Corbado 内にプロジェクトを作成します。アプリケーションの種類として「Web アプリ」を指定し、フレームワークとして Angular を選択します。アプリケーション設定で、次の詳細を使用します:

  • アプリケーション URL: http://localhost:4200
  • 証明書利用者 ID: localhost

2. Corbado UI コンポーネントの埋め込み

次に、Corvado 統合に必要なパッケージをインストールする必要があります。プロジェクトのルート ディレクトリに移動し、必要なパッケージをインストールします:

npm i @corbado/web-js
npm i -D @corbado/types @types/react @types/ua-parser-js
ログイン後にコピー

アプリケーションの起動時に Corbado を初期化するように app.component.ts を変更します。

import { Component, OnInit } from '@angular/core';
import Corbado from "@corbado/web-js";

@Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
    title = 'passkeys-demo-angular';
    isInitialized = false;

    constructor() {
    }

    ngOnInit(): void {
        this.initialize();
    }

    async initialize() {
        try {
            await Corbado.load({
                projectId: "<Your Corbado Project ID>",
                darkMode: 'off'
            });
            this.isInitialized = true;
        } catch (error) {
            console.error('Initialization failed:', error);
        }
    }
}
ログイン後にコピー

3. ログインおよびプロファイルコンポーネントの作成

2 つのコンポーネントを生成します。1 つはパスキー ログイン UI を表示するためのもので、もう 1 つは認証成功時に基本的なユーザー情報を表示するためのものです。

ng generate component login
ng generate component profile
ログイン後にコピー

app-routing.module.ts を更新して、ログイン コンポーネントとプロファイル コンポーネントのルートを定義します。

// src/app/app-routing.module.ts

import { NgModule } from '@angular/core';
import { ProfileComponent } from "./profile/profile.component";
import { RouterModule, Routes } from "@angular/router";
import { LoginComponent } from "./login/login.component";

const routes: Routes = [
    { path: 'profile', component: ProfileComponent },
    { path: 'login', component: LoginComponent },
    { path: '', component: LoginComponent },
    { path: '**', redirectTo: '/' }
]

@NgModule({
    imports: [
        RouterModule.forRoot(routes)
    ],
    exports: [RouterModule]
})
export class AppRoutingModule {
}
ログイン後にコピー

login.component.ts で、パスキー認証 UI を設定し、ログイン成功後の動作を定義します。

import { Component, OnInit, ViewChild, ElementRef, AfterViewInit } from '@angular/core';
import { Router } from '@angular/router';
import Corbado from "@corbado/web-js";

@Component({
    selector: 'app-login',
    templateUrl: './login.component.html',
    styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit, AfterViewInit {
    @ViewChild('authElement', { static: false }) authElement!: ElementRef;  // Access the element

    constructor(private router: Router) {
    }

    ngOnInit() {
        if (Corbado.user) {
            this.router.navigate(['/profile']);
        }
    }

    ngAfterViewInit() {
        // Mount the Corbado auth UI after the view initializes
        Corbado.mountAuthUI(this.authElement.nativeElement, {
            onLoggedIn: () => this.router.navigate(['/profile']), // Use Angular's router instead of window.location
        });
    }
}
ログイン後にコピー

そして、login.component.html に次の内容を追加します:

<div #authElement></div>
ログイン後にコピー

4. プロフィールページの設定

プロフィール ページには、基本的なユーザー情報 (ユーザー ID と電子メール) が表示され、ログアウト ボタンが表示されます。ユーザーがログインしていない場合は、ホームページに戻るように求めるメッセージが表示されます。

import { Component } from '@angular/core';
import { Router } from "@angular/router";
import Corbado from "@corbado/web-js";

@Component({
    selector: 'app-profile',
    templateUrl: './profile.component.html',
    styleUrls: ['./profile.component.css']
})
export class ProfileComponent {
    user = Corbado.user

    constructor(private router: Router) {
    }

    async handleLogout() {
        await Corbado.logout()
        await this.router.navigate(['/']);
    }
}
ログイン後にコピー

profile.component.html で、認証状態に基づいてユーザーの情報を条件付きで表示します。

<div>
    <ng-container *ngIf="user; else notLoggedIn">
        <div>
            <h1>Profile Page</h1>
            <div>
                <p>
                    User-ID: {{user.sub}}
                    <br />
                    Email: {{user.email}}
                </p>
            </div>
            <button (click)="handleLogout()">Logout</button>
        </div>
    </ng-container>

    <ng-template #notLoggedIn>
        <div>
            <p>You're not logged in.</p>
            <p>Please go back to <a routerLink="/">home</a> to log in.</p>
        </div>
    </ng-template>
</div>
ログイン後にコピー

アプリケーションの実行

すべてのセットアップが完了したら、アプリケーションを実行します。

ng serve
ログイン後にコピー
ログイン後にコピー

http://localhost:4200 にアクセスしてログイン画面を表示します。認証が成功すると、プロフィール ページにリダイレクトされます。

結論

このチュートリアルでは、Corvado を使用してパスキー認証を Angular アプリケーションに統合する方法を説明しました。 Corbado のツールを使用すると、パスワードなしの認証を簡単かつ安全に実装できます。セッション管理やその他の高度な機能の詳細については、Corbado のドキュメントを参照するか、詳細なブログ投稿を確認してください。

以上がチュートリアル: パスキーを Angular に統合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート