Quick Start
Welcome to FluidAuth Express! Follow these steps to integrate FluidAuth Express into your Express application.
Installation
Install the required packages with:
npm install express cookie-parser @fluidauth/express
Setup
Step 1: Configure a Provider
Example using GitHub:
import { GithubProvider } from "@fluidauth/express/providers";
const Github = new GithubProvider({
credential: {
clientId: "your-client-id",
clientSecret: "your-client-secret",
redirectUri: "your-redirect-uri",
},
async verifyUser(data, profile) {
const user = await findUserByEmail(data.email);
if (!user) {
return { user: null, info: { message: "User not found" } };
}
return { user };
}
});
Step 2: Set Up Express and Middleware
Configure your Express app:
import express from 'express';
import cookieParser from 'cookie-parser';
import { AuthService, Session } from '@fluidauth/express';
const app = express();
const PORT = process.env.PORT || 3000;
const authService = new AuthService({
providers: [Github],
session: new Session({
secret: "your-session-secret",
}),
redirect: {
successRedirect: "/dashboard",
},
});
app.use(express.json());
app.use(cookieParser());
app.use(authService.session());
app.use(authService.initialize());
Step 3: Serialization and Deserialization
Configure user data handling:
// Serialization: Store user ID in the session
authService.serializeUser(user => user.id);
// Deserialization: Retrieve user data from the session
authService.deserializeUser(async id => {
const user = await findUserById(id);
return user || null;
});
Step 4: Define Authentication Routes
Add authentication routes:
app.get("/auth/github", authService.authenticate("github"));
app.get("/auth/redirect/github", authService.handleCallback("github"));
app.listen(PORT, () => {
console.log(`Server running on http://localhost:${PORT}`);
});
Summary
You’ve set up FluidAuth Express with GitHub, configured your Express app, and defined authentication routes. This setup handles user authentication and session management effectively.
Notes
- Organize provider configurations in separate files for better maintainability.
- FluidAuth’s session management integrates seamlessly with our library, offering a tailored experience.
For more details, refer to the Serialization and Deserialization section.