ตัวอย่าง angular auth0

นี่คือตัวอย่าง Angular Auth0 ง่ายๆ ที่แสดงวิธีใช้ Angular Auth0 เพื่อเพิ่มการรับรองความถูกต้องและอนุญาตให้กับแอปพลิเคชัน Angular

แอปพลิเคชันนี้ประกอบด้วยสองส่วน:

  • หน้าแรก แสดงข้อความต้อนรับ
  • หน้าข้อมูลผู้ใช้ แสดงข้อมูลเกี่ยวกับผู้ใช้ที่เข้าสู่ระบบ

หน้าแรก

หน้าแรกแสดงข้อความต้อนรับและปุ่ม “เข้าสู่ระบบ” เมื่อผู้ใช้คลิกปุ่ม “เข้าสู่ระบบ” แอปพลิเคชันจะเรียกใช้ AuthService.login() เพื่อนำผู้ใช้ไปยังหน้าเข้าสู่ระบบของ Auth0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import { Component, OnInit } from '@angular/core';
import { AuthService } from '@auth0/auth0-angular';

@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {

constructor(private authService: AuthService) {}

ngOnInit() {
this.authService.isAuthenticated$.subscribe((isAuthenticated) => {
if (isAuthenticated) {
this.navigateToUserProfile();
}
});
}

login() {
this.authService.login();
}

navigateToUserProfile() {
// Navigate to the user profile page.
}

}
1
2
<h1>Welcome!</h1>
<button (click)="login()">เข้าสู่ระบบ</button>

หน้าข้อมูลผู้ใช้

หน้าข้อมูลผู้ใช้แสดงข้อมูลเกี่ยวกับผู้ใช้ที่เข้าสู่ระบบ ข้อมูลนี้รวมถึงชื่อ อีเมล และ ID ผู้ใช้

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import { Component, OnInit } from '@angular/core';
import { AuthService } from '@auth0/auth0-angular';

@Component({
selector: 'my-user-profile',
templateUrl: './user-profile.component.html',
styleUrls: ['./user-profile.component.css']
})
export class UserProfileComponent implements OnInit {

constructor(private authService: AuthService) {}

ngOnInit() {
this.user = this.authService.getProfile();
}

}
1
2
3
<h1>{{ user.name }}</h1>
<p>{{ user.email }}</p>
<p>{{ user.id }}</p>

เพื่อปกป้องหน้าข้อมูลผู้ใช้ไม่ให้ผู้ใช้ที่ไม่ได้รับอนุญาตเข้าถึง ให้ใช้ AuthGuard เพื่อกำหนดค่าการเข้าถึงเฉพาะสำหรับผู้ใช้ที่เข้าสู่ระบบ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import { CanActivate, Injectable } from '@angular/core';
import { AuthService } from '@auth0/auth0-angular';

@Injectable({
providedIn: 'root'
})
export class UserProfileGuard implements CanActivate {

constructor(private authService: AuthService) {}

canActivate() {
return this.authService.isAuthenticated;
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@NgModule({
declarations: [
AppComponent,
UserProfileComponent
],
imports: [
BrowserModule,
AuthModule.forRoot({
domain: 'YOUR_AUTH0_DOMAIN',
clientId: 'YOUR_AUTH0_CLIENT_ID'
}),
// Import the AuthGuard.
AuthGuardModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

เมื่อผู้ใช้เข้าสู่ระบบ แอปพลิเคชันจะแสดงหน้าข้อมูลผู้ใช้ ผู้ใช้ที่ไม่ได้รับอนุญาตจะถูกนำกลับไปที่หน้าแรก