Passport.js integrieren
Lernen Sie, Passport.js-Strategien wie Local und JWT für flexible und robuste Authentifizierungsabläufe zu integrieren.
Passport.js integrieren ist eine kostenlose Next.js 15 Fullstack (App Router + Server Actions)-Lektion auf CoddyKit. Dies ist Lektion 6 von 6. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Next.js 15 Fullstack (App Router + Server Actions)-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Next.js 15 Fullstack (App Router + Server Actions)-Kurs umfasst insgesamt 6 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
Meet Passport.js
Welcome to integrating Passport.js with NestJS! Passport is a popular authentication middleware for Node.js applications.
It provides a flexible and modular way to handle different authentication mechanisms, known as 'strategies'. NestJS has excellent integration with Passport, making it easy to secure your APIs.
Setting Up Passport.js
To get started, you'll need to install a few packages. We'll install the core Passport packages for NestJS and specific strategies for local (username/password) and JWT authentication.
@nestjs/passport: NestJS integrationpassport: Core Passport.js librarypassport-local: For username/password authenticationpassport-jwt: For JSON Web Token authentication
npm install @nestjs/passport passport passport-local passport-jwtPassport Strategy: Local
The Local Strategy is used for traditional username and password authentication. When a user tries to log in, Passport.js uses this strategy to verify their credentials.
You'll create a class that extends PassportStrategy(Strategy, 'local') and implement a validate method. This method receives the username and password from the request.
Local Strategy Logic
The validate method is the heart of any Passport strategy. It's where you define the logic to verify credentials (e.g., checking against a database). If validation succeeds, it returns the user object; otherwise, it returns null or throws an error.
Try running this simplified example of the validate logic:
class MockLocalStrategy {
async validate(username: string, password: string): Promise<any> {
// In a real app, you'd query a database here
if (username === 'testuser' && password === 'mypass') {
return { userId: 1, username: 'testuser' };
}
return null; // Or throw an error for invalid credentials
}
}
async function main() {
const strategy = new MockLocalStrategy();
const user = await strategy.validate('testuser', 'mypass');
if (user) {
console.log(`Auth successful for: ${user.username}`);
} else {
console.log('Auth failed: Invalid credentials');
}
}
main();Using Local Strategy with Guards
Once your LocalStrategy is defined and registered, you can protect routes using NestJS Guards. The AuthGuard('local') leverages your strategy to authenticate incoming requests.
If the user is authenticated, the user object returned by your validate method will be attached to the request (req.user).
@Post('login')
@UseGuards(AuthGuard('local'))
async login(@Request() req) {
return req.user;
}Passport Strategy: JWT
The JWT Strategy is used to validate JSON Web Tokens. Instead of username/password, it extracts the JWT from the request (usually from the Authorization header) and verifies its signature.
Your JwtStrategy also has a validate method, but it receives the decrypted JWT payload. You then use this payload to identify and return the user.
JWT Strategy Logic
For the JWT Strategy, the validate method receives the token's payload after Passport has already verified the token's signature. Your job here is usually to retrieve the user associated with that payload (e.g., from a database).
Here's a simplified example of the validate logic:
class MockJwtStrategy {
async validate(payload: any): Promise<any> {
// In a real app, you'd fetch user from DB based on payload.sub
if (payload && payload.sub === 101) {
return { userId: payload.sub, username: 'apiuser' };
}
return null; // User not found or invalid payload
}
}
async function main() {
const strategy = new MockJwtStrategy();
// Imagine this payload came from a verified JWT
const mockPayload = { sub: 101, username: 'apiuser', iat: 123, exp: 456 };
const user = await strategy.validate(mockPayload);
if (user) {
console.log(`JWT validation successful for: ${user.username}`);
} else {
console.log('JWT validation failed: User not found');
}
}
main();Using JWT Strategy with Guards
Similar to the local strategy, you use AuthGuard('jwt') to protect routes that require a valid JWT. This guard automatically extracts, validates, and decodes the token using your JwtStrategy.
If the token is valid, the user object returned by validate is attached to req.user.
@Get('profile')
@UseGuards(AuthGuard('jwt'))
getProfile(@Request() req) {
return req.user;
}Flexible Authentication Flows
Passport.js excels in its flexibility. You can use multiple strategies within a single application and even specify multiple strategies for a single route using AuthGuard(['jwt', 'local']).
This allows you to support various authentication methods, like social logins (OAuth strategies), API keys, or session-based auth, all managed by Passport's unified interface.
Check Your Understanding
Let's test your knowledge about Passport.js strategies.
Recap: Passport.js Integration
In this lesson, we explored how to integrate Passport.js into your NestJS applications. We covered:
- The core concept of Passport.js and its strategies.
- Implementing a Local Strategy for username/password authentication.
- Implementing a JWT Strategy for token-based authentication.
- Using AuthGuards to protect your API routes with these strategies.
Passport.js provides a powerful and flexible foundation for building robust authentication flows!
Lerne TypeScript mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 22
- Lektionen
- 88
Häufig gestellte Fragen
Ist die Lektion „Passport.js integrieren“ kostenlos?
Ja — der vollständige Text von „Passport.js integrieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Next.js 15 Fullstack (App Router + Server Actions)-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Next.js 15 Fullstack (App Router + Server Actions)-Kurs umfasst insgesamt 6 Lektionen.
Was lerne ich in „Passport.js integrieren“?
Lernen Sie, Passport.js-Strategien wie Local und JWT für flexible und robuste Authentifizierungsabläufe zu integrieren. Du übst Next.js 15 Fullstack (App Router + Server Actions) mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Next.js 15 Fullstack (App Router + Server Actions) zu starten?
Keine Vorkenntnisse erforderlich. Next.js 15 Fullstack (App Router + Server Actions) auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 6 von 6.
Wie lange dauert die Lektion „Passport.js integrieren“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Next.js 15 Fullstack (App Router + Server Actions)-Lektion Code schreiben und ausführen?
Ja. Jede Next.js 15 Fullstack (App Router + Server Actions)-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- NextAuth.js integrieren
- Implementierung einer JWT-Strategie
- Routen und Daten schützen
- Guards und Rollen
- Benutzerdefinierte Authentifizierungsstrategien
- Passport.js integrieren