في هذا الدليل، سنتعرف على عملية دمج مصادقة مفتاح المرور في تطبيق Angular باستخدام TypeScript. توفر مفاتيح المرور طريقة آمنة وقابلة للتطوير لإدارة مصادقة المستخدم، مما يلغي الحاجة إلى كلمات المرور التقليدية.
شاهد البرنامج التعليمي الكامل في منشور مدونتنا الأصلي هنا
قبل البدء، تأكد من أنك على دراية بـ Angular وHTML وCSS وTypeScript. بالإضافة إلى ذلك، تأكد من تثبيت Node.js وNPM على جهازك. يوصى بتثبيت Angular CLI في هذا البرنامج التعليمي:
npm install -g @angular/cli
أولاً، لنقم بإنشاء مشروع Angular جديد. في هذا المثال، نستخدم الإصدار Angular 15.2.9:
ng new passkeys-demo-angular
أثناء الإعداد، اختر الخيارات التالية:
بمجرد اكتمال الإعداد، قم بتشغيل التطبيق للتأكد من أن كل شيء يعمل:
ng serve
للبدء، قم بإنشاء حساب على لوحة مطوري Corbado. تتيح لك هذه الخطوة تجربة تسجيل مفتاح المرور بشكل مباشر. بعد التسجيل، قم بإنشاء مشروع داخل Corbado عن طريق تحديد "Corbado Complete" كمنتجك. حدد "تطبيق الويب" كنوع التطبيق، وبالنسبة للإطار، حدد Angular. في إعدادات التطبيق، استخدم التفاصيل التالية:
بعد ذلك، ستحتاج إلى تثبيت الحزم المطلوبة لتكامل Corbado. انتقل إلى الدليل الجذر لمشروعك وقم بتثبيت الحزم اللازمة:
npm i @corbado/web-js npm i -D @corbado/types @types/react @types/ua-parser-js
تعديل app.component.ts لتهيئة Corbado عند بدء تشغيل التطبيق:
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: "", darkMode: 'off' }); this.isInitialized = true; } catch (error) { console.error('Initialization failed:', error); } } }
قم بإنشاء مكونين: أحدهما لعرض واجهة مستخدم تسجيل الدخول بمفتاح المرور والآخر لعرض معلومات المستخدم الأساسية عند المصادقة الناجحة:
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 { }
في تسجيل الدخول.component.ts، قم بإعداد واجهة مستخدم مصادقة مفتاح المرور وتحديد السلوك بعد تسجيل الدخول الناجح:
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 أضف ما يلي:
ستعرض صفحة الملف الشخصي معلومات المستخدم الأساسية (معرف المستخدم والبريد الإلكتروني) وتوفر زر تسجيل الخروج. إذا لم يقوم المستخدم بتسجيل الدخول، فستطالبه الصفحة بالعودة إلى الصفحة الرئيسية:
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، عرض معلومات المستخدم بشكل مشروط بناءً على حالة المصادقة الخاصة به:
Profile Page
User-ID: {{user.sub}}
Email: {{user.email}}You're not logged in.
Please go back to home to log in.
بمجرد إعداد كل شيء، قم بتشغيل التطبيق:
ng serve
قم بزيارة http://localhost:4200 لعرض شاشة تسجيل الدخول، وبعد المصادقة الناجحة، سيتم إعادة توجيهك إلى صفحة الملف الشخصي.
يوضح هذا البرنامج التعليمي كيفية دمج مصادقة مفتاح المرور في تطبيق Angular باستخدام Corbado. باستخدام أدوات Corbado، أصبح تنفيذ المصادقة بدون كلمة مرور أمرًا مباشرًا وآمنًا. لمزيد من التفاصيل حول إدارة الجلسة والميزات المتقدمة الأخرى، راجع وثائق Corbado أو راجع منشور المدونة التفصيلي.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3