{"library":"passport","title":"Passport","description":"Passport is an Express-compatible authentication middleware for Node.js. It provides a simple, unobtrusive way to authenticate requests through an extensible set of 'strategies' (plugins) for various authentication methods like username/password, OAuth, or OpenID. It focuses solely on authentication, allowing developers to make application-level decisions about database schemas and routing. The current stable version is 0.7.0, and it is actively maintained.","language":"javascript","status":"active","last_verified":"Sat Apr 18","install":{"commands":["npm install passport"],"cli":null},"imports":["import passport from 'passport'"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import express from 'express';\nimport session from 'express-session';\nimport passport from 'passport';\nimport { Strategy as LocalStrategy } from 'passport-local';\n\nconst app = express();\n\n// Mock User database (in-memory)\nconst users = [{ id: '1', username: 'testuser', password: 'password123' }];\n\n// Configure Passport local strategy\npassport.use(new LocalStrategy(\n  (username, password, done) => {\n    const user = users.find(u => u.username === username);\n    if (!user || user.password !== password) {\n      return done(null, false, { message: 'Incorrect username or password.' });\n    }\n    return done(null, user);\n  }\n));\n\n// Configure Passport session serialization/deserialization\npassport.serializeUser((user, done) => {\n  done(null, user.id);\n});\n\npassport.deserializeUser((id, done) => {\n  const user = users.find(u => u.id === id);\n  done(null, user);\n});\n\n// Setup Express middleware\napp.use(session({\n  secret: process.env.SESSION_SECRET ?? 'a-very-secret-key', // Use a strong secret in production\n  resave: false,\n  saveUninitialized: false\n}));\napp.use(passport.initialize());\napp.use(passport.session());\napp.use(express.urlencoded({ extended: false })); // For form parsing\n\n// Example routes\napp.get('/login', (req, res) => {\n  res.send('<form action=\"/login\" method=\"POST\">Username: <input name=\"username\"/><br/>Password: <input type=\"password\" name=\"password\"/><br/><button type=\"submit\">Login</button></form>');\n});\n\napp.post('/login',\n  passport.authenticate('local', {\n    successRedirect: '/profile',\n    failureRedirect: '/login',\n    failureMessage: true\n  })\n);\n\napp.get('/profile', (req, res) => {\n  if (!req.isAuthenticated()) {\n    return res.redirect('/login');\n  }\n  res.send(`Welcome, ${req.user.username}! This is your profile.`);\n});\n\napp.listen(3000, () => console.log('Server running on port 3000'));\n\n// To run this example:\n// npm install express express-session passport passport-local\n// Add \"type\": \"module\" to your package.json for ESM support.","lang":"javascript","description":"This quickstart demonstrates how to set up Passport with Express and a 'local' authentication strategy. It includes user serialization/deserialization for session management, a mock user database, and basic login/profile routes to show authentication in action. Users can access a protected profile route after logging in.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}