You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 08:48:14