Security
Built-in security for auth, passwords, JWT, and sessions.
Password Hashing
// Hash password
String hash = Passwords.hash("secret123");
// Verify password
boolean valid = Passwords.verify("secret123", hash);JWT Authentication
// Generate token
String token = JWT.create()
.subject(user.getId())
.claim("role", user.getRole())
.expiresIn(Duration.ofHours(24))
.sign(SECRET_KEY);
// Verify token
Claims claims = JWT.verify(token, SECRET_KEY);
String userId = claims.getSubject();Protected Routes
app.use("/admin/**", Auth.required());
app.use("/api/**", Auth.jwt(SECRET_KEY));
// In handler
app.get("/profile", req -> {
User user = req.user(); // Current user
return profilePage(user);
});Rate Limiting
app.use(RateLimit.perMinute(100));
app.use("/api/**", RateLimit.perMinute(30));Always use HTTPS in production and store secrets in environment variables.