auth0-angular
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseAuth0 Angular Integration
Auth0 Angular 集成
Add authentication to Angular applications using @auth0/auth0-angular.
使用@auth0/auth0-angular为Angular应用添加认证功能。
Prerequisites
前置条件
- Angular 13+ application
- Auth0 account and application configured
- If you don't have Auth0 set up yet, use the skill first
auth0-quickstart
- Angular 13+ 应用
- 已配置的Auth0账号和应用
- 如果还未设置Auth0,请先使用技能
auth0-quickstart
When NOT to Use
不适用于以下场景
- AngularJS (1.x) - This SDK requires Angular 13+, use legacy solutions for AngularJS
- Mobile applications - Use for React Native or native SDKs for Ionic
auth0-react-native - Backend APIs - Use JWT validation middleware for your server language
- AngularJS (1.x) - 该SDK要求Angular 13+,AngularJS请使用旧版解决方案
- 移动应用 - React Native请使用,Ionic请使用原生SDK
auth0-react-native - 后端API - 请为你的服务端语言使用JWT验证中间件
Quick Start Workflow
快速开始流程
1. Install SDK
1. 安装SDK
bash
npm install @auth0/auth0-angularbash
npm install @auth0/auth0-angular2. Configure Environment
2. 配置环境
For automated setup with Auth0 CLI, see Setup Guide for complete scripts.
For manual setup:
Update :
src/environments/environment.tstypescript
export const environment = {
production: false,
auth0: {
domain: 'your-tenant.auth0.com',
clientId: 'your-client-id',
authorizationParams: {
redirect_uri: window.location.origin
}
}
};使用Auth0 CLI自动设置,请查看设置指南获取完整脚本。
手动设置:
Update :
src/environments/environment.tstypescript
export const environment = {
production: false,
auth0: {
domain: 'your-tenant.auth0.com',
clientId: 'your-client-id',
authorizationParams: {
redirect_uri: window.location.origin
}
}
};3. Configure Auth Module
3. 配置Auth模块
For standalone components (Angular 14+):
Update :
src/app/app.config.tstypescript
import { ApplicationConfig } from '@angular/core';
import { provideAuth0 } from '@auth0/auth0-angular';
import { environment } from '../environments/environment';
export const appConfig: ApplicationConfig = {
providers: [
provideAuth0({
domain: environment.auth0.domain,
clientId: environment.auth0.clientId,
authorizationParams: environment.auth0.authorizationParams
})
]
};For NgModule-based apps:
Update :
src/app/app.module.tstypescript
import { AuthModule } from '@auth0/auth0-angular';
import { environment } from '../environments/environment';
@NgModule({
imports: [
AuthModule.forRoot({
domain: environment.auth0.domain,
clientId: environment.auth0.clientId,
authorizationParams: environment.auth0.authorizationParams
})
]
})
export class AppModule {}独立组件(Angular 14+):
更新:
src/app/app.config.tstypescript
import { ApplicationConfig } from '@angular/core';
import { provideAuth0 } from '@auth0/auth0-angular';
import { environment } from '../environments/environment';
export const appConfig: ApplicationConfig = {
providers: [
provideAuth0({
domain: environment.auth0.domain,
clientId: environment.auth0.clientId,
authorizationParams: environment.auth0.authorizationParams
})
]
};基于NgModule的应用:
更新:
src/app/app.module.tstypescript
import { AuthModule } from '@auth0/auth0-angular';
import { environment } from '../environments/environment';
@NgModule({
imports: [
AuthModule.forRoot({
domain: environment.auth0.domain,
clientId: environment.auth0.clientId,
authorizationParams: environment.auth0.authorizationParams
})
]
})
export class AppModule {}4. Add Authentication UI
4. 添加认证UI
Update :
src/app/app.component.tstypescript
import { Component } from '@angular/core';
import { AuthService } from '@auth0/auth0-angular';
@Component({
selector: 'app-root',
template: `
<div *ngIf="auth.isLoading$ | async; else loaded">
<p>Loading...</p>
</div>
<ng-template #loaded>
<ng-container *ngIf="auth.isAuthenticated$ | async; else loggedOut">
<div *ngIf="auth.user$ | async as user">
<img [src]="user.picture" [alt]="user.name" />
<h2>Welcome, {{ user.name }}!</h2>
<button (click)="logout()">Logout</button>
</div>
</ng-container>
<ng-template #loggedOut">
<button (click)="login()">Login</button>
</ng-template>
</ng-template>
`
})
export class AppComponent {
constructor(public auth: AuthService) {}
login(): void {
this.auth.loginWithRedirect();
}
logout(): void {
this.auth.logout({ logoutParams: { returnTo: window.location.origin } });
}
}更新:
src/app/app.component.tstypescript
import { Component } from '@angular/core';
import { AuthService } from '@auth0/auth0-angular';
@Component({
selector: 'app-root',
template: `
<div *ngIf="auth.isLoading$ | async; else loaded">
<p>加载中...</p>
</div>
<ng-template #loaded>
<ng-container *ngIf="auth.isAuthenticated$ | async; else loggedOut">
<div *ngIf="auth.user$ | async as user">
<img [src]="user.picture" [alt]="user.name" />
<h2>欢迎回来,{{ user.name }}!</h2>
<button (click)="logout()">登出</button>
</div>
</ng-container>
<ng-template #loggedOut">
<button (click)="login()">登录</button>
</ng-template>
</ng-template>
`
})
export class AppComponent {
constructor(public auth: AuthService) {}
login(): void {
this.auth.loginWithRedirect();
}
logout(): void {
this.auth.logout({ logoutParams: { returnTo: window.location.origin } });
}
}5. Test Authentication
5. 测试认证功能
Start your dev server and test the login flow:
bash
ng serve启动开发服务器并测试登录流程:
bash
ng serveDetailed Documentation
详细文档
- Setup Guide - Automated setup scripts (Bash/PowerShell), CLI commands, manual configuration
- Integration Guide - Protected routes with guards, HTTP interceptors, error handling
- API Reference - Complete SDK API, configuration options, services reference, testing strategies
- 设置指南 - 自动设置脚本(Bash/PowerShell)、CLI命令、手动配置
- 集成指南 - 使用守卫保护路由、HTTP拦截器、错误处理
- API参考 - 完整SDK API、配置选项、服务参考、测试策略
Common Mistakes
常见错误
| Mistake | Fix |
|---|---|
| Forgot to add redirect URI in Auth0 Dashboard | Add your application URL (e.g., |
| Not configuring AuthModule properly | Must call |
| Accessing auth before initialization | Use |
| Storing tokens manually | Never manually store tokens - SDK handles secure storage automatically |
| Missing HTTP interceptor | Use |
| Route guard not protecting routes | Apply |
| 错误 | 修复方案 |
|---|---|
| 忘记在Auth0控制台添加重定向URI | 将你的应用URL(例如 |
| AuthModule配置不正确 | 必须在NgModule中调用 |
| 在初始化前访问认证服务 | 使用 |
| 手动存储令牌 | 切勿手动存储令牌 - SDK会自动处理安全存储 |
| 缺少HTTP拦截器 | 使用 |
| 路由守卫未保护路由 | 在路由配置中为受保护路由应用 |
Related Skills
相关技能
- - Basic Auth0 setup
auth0-quickstart - - Migrate from another auth provider
auth0-migration - - Add Multi-Factor Authentication
auth0-mfa
- - 基础Auth0设置
auth0-quickstart - - 从其他认证提供商迁移
auth0-migration - - 添加多因素认证
auth0-mfa
Quick Reference
快速参考
Core Services:
- - Main authentication service
AuthService - - Observable check if user is logged in
isAuthenticated$ - - Observable user profile information
user$ - - Initiate login
loginWithRedirect() - - Log out user
logout() - - Get access token for API calls
getAccessTokenSilently()
Common Use Cases:
- Login/Logout buttons → See Step 4 above
- Protected routes with guards → Integration Guide
- HTTP interceptors for API calls → Integration Guide
- Error handling → Integration Guide
核心服务:
- - 主要认证服务
AuthService - - 检查用户是否已登录的可观察对象
isAuthenticated$ - - 用户资料信息的可观察对象
user$ - - 发起登录
loginWithRedirect() - - 登出用户
logout() - - 获取用于API调用的访问令牌
getAccessTokenSilently()
常见使用场景:
- 登录/登出按钮 → 请参见上方步骤4
- 使用守卫保护路由 → 集成指南
- 用于API调用的HTTP拦截器 → 集成指南
- 错误处理 → 集成指南