This example shows a simple login flow using Express. It serves a login form, checks credentials, saves the user in session, and protects a dashboard page.
import express from 'express';
import session from 'express-session';
const app = express();
app.use(express.urlencoded({ extended: true }));
app.use(session({ secret: 'secret-key', resave: false, saveUninitialized: true }));
const users = { user1: 'password123' };
app.get('/login', (req, res) => {
res.send(`<form method='POST' action='/login'>
<label for='username'>Username:</label>
<input id='username' name='username' required />
<label for='password'>Password:</label>
<input id='password' name='password' type='password' required />
<button type='submit'>Login</button>
</form>`);
});
app.post('/login', (req, res) => {
const { username, password } = req.body;
if (users[username] && users[username] === password) {
req.session.user = username;
res.send(`Hello, ${username}! You are logged in.`);
} else {
res.status(401).send('Invalid username or password');
}
});
app.get('/dashboard', (req, res) => {
if (req.session.user) {
res.send(`Welcome to your dashboard, ${req.session.user}.`);
} else {
res.status(401).send('Please login first');
}
});
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});