Express/Postgres项目中Swagger UI的Basic Auth无法正常工作求助
Passport Basic策略无法在Swagger UI中完成认证问题
我正在使用Express和Postgres构建后端,通过Passport.js实现用户认证,并用Swagger UI Express生成API文档。但Passport的Basic策略出现问题,无法让用户在Swagger UI登录并测试特定接口。
以下是我的Passport.js配置(路径:./routers/auth.js):
const passport = require("passport"); const authenticate = async (email, password, done) => { try { const result = await pool.query("SELECT users.id AS id, users.email AS email, users.password AS password, carts.id AS cart_id FROM users JOIN carts ON carts.user_id = users.id WHERE email = $1", [email]); if (result.rows.length === 0) return done(null, false); const passwordMatch = await bcrypt.compare(password, result.rows[0].password); if (!passwordMatch) return done(null, false); return done(null, { id: result.rows[0].id, email: result.rows[0].email, cartId: result.rows[0].cart_id }); } catch(err) { return done(err); } } const LocalStrategy = require("passport-local").Strategy; passport.use(new LocalStrategy({ usernameField: "email" }, authenticate)); const { BasicStrategy } = require("passport-http"); passport.use(new BasicStrategy({ usernameField: "email" }, authenticate)); passport.serializeUser((user, done) => { return done(null, user.id); }); passport.deserializeUser(async (id, done) => { try { const result = await pool.query("SELECT users.id AS id, users.email AS email, carts.id AS cart_id FROM users JOIN carts ON carts.user_id = users.id WHERE users.id = $1", [id]); if (result.rows.length === 0) return done(null, false); return done(null, { id: result.rows[0].id, email: result.rows[0].email, cartId: result.rows[0].cart_id }); } catch(err) { return done(err); } });
我已查阅网络寻找解决方案,包括在Swagger UI Express的配置中添加授权头,但至今未解决,恳请帮助。
内容的提问来源于stack exchange,提问作者Davy Kamanzi
相关产品推荐
相关产品推荐

