我正在使用 Discord OAuth2 提供商编写应用程序。我使用过 passport 和 passport-discord 库。我已经创建了中间件来检查身份验证,现在我想将其导出以用于其他文件。我不能。
index.js :
const express = require('express')
const app = express()
const session = require('express-session');
const passport = require('passport');
const DiscordStrategy = require('passport-discord').Strategy;
// Configuration
app.use(session({
secret: 'super-secret-session-code',
resave: false,
saveUninitialized: false
}));
// Init Passport.js
app.use(passport.initialize());
app.use(passport.session());
// Config Discord OAuth
const discordStrategy = new DiscordStrategy({
clientID: '<MyClientId>',
clientSecret: '<MyClientSecret>',
callbackURL: 'http://192.168.0.4:3001/auth/discord/callback',
scope: ['identify', 'email']
}, async (accessToken, refreshToken, profile, done) => {
done(null, user);
});
passport.use(discordStrategy);
// Serialise and deserialise user
passport.serializeUser((user, done) => {
done(null, user);
});
passport.deserializeUser((user, done) => {
done(null, user);
});
这个功能,只适用于
index.js
:
function isAuthenticated(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
//res.redirect('/auth/discord');
res.sendStatus(401)
}
req.isAuthenticated()
- 此行仅适用于此文件,我什至无法将该功能导出到其他文件...
当我尝试将其导入其他文件时:
const isAuthenticated = require('./index').isAuthenticated
或与
module.exports = ...
并将其用作中间件:
router.use('/dashboard', isAuthenticated, dashboard)
我得到一个错误:
Error: Route.get() requires a callback function but got a [object Undefined]
也许这是我对JavaScript不熟悉的错误,但如果有人能帮助我,我将不胜感激!