API kimlik doğrulama için JWT token oluşturma ve doğrulama middleware'i.
import jwt from class=class="text-emerald-400">"text-emerald-400">'jsonwebtoken'
import type { Request, Response, NextFunction } from class=class="text-emerald-400">"text-emerald-400">'express'
const SECRET = process.env.JWT_SECRET || class=class="text-emerald-400">"text-emerald-400">'your-secret-key'
const EXPIRES_IN = class=class="text-emerald-400">"text-emerald-400">'7d'
interface TokenPayload {
userId: string
email: string
role: string
}
export function generateToken(payload: TokenPayload): string {
return jwt.sign(payload, SECRET, { expiresIn: EXPIRES_IN })
}
export function verifyToken(token: string): TokenPayload {
return jwt.verify(token, SECRET) as TokenPayload
}
export function authMiddleware(req: Request, res: Response, next: NextFunction) {
const header = req.headers.authorization
if (!header?.startsWith(class=class="text-emerald-400">"text-emerald-400">'Bearer ')) {
return res.status(401).json({ error: class=class="text-emerald-400">"text-emerald-400">'No token provided' })
}
try {
const token = header.split(class=class="text-emerald-400">"text-emerald-400">' ')[1]
const payload = verifyToken(token)
;(req as Request & { user: TokenPayload }).user = payload
next()
} catch {
return res.status(401).json({ error: class=class="text-emerald-400">"text-emerald-400">'Invalid or expired token' })
}
}Başarılı girişten sonra generateToken({ userId, email, role }) çağırın. authMiddleware'i korunan route'lara uygulayın: app.get('/profile', authMiddleware, handler). Handler'larınızda kullanıcıya (req as any).user ile erişin.
Fikrinizi nasıl hayata geçirebileceğimizi konuşalım. İlk konseptten üretime hazır ürüne kadar — yanınızdayız.