我已经尝试了很长时间,但我似乎无法理解它是如何工作的。
我有一个passport.ts
文件大致定义为:
passport.serializeUser<any, any>((user, done) => {
done(undefined, 1);
});
passport.deserializeUser((id, done) => {
done(null, 1);
});
// Strategy config
const GoogleStrategy = passportGoogle.Strategy
passport.use(new GoogleStrategy({
clientID: config.get('googleAuth.clientID'),
clientSecret: config.get('googleAuth.clientSecret'),
callbackURL: config.get('googleAuth.callbackURL'),
passReqToCallback: true
}, async (accessToken, refreshToken, profile, done)=> {
return done
}))
在项目的根目录中,我有一个index.ts
标准护照初始化:
app.use(passport.initialize());
app.use(passport.session());
我通过 express 的 Router 函数在不同的文件中定义控制器,其中之一authenticate.ts
大致遵循以下几行:
import {Router} from 'express';
import passport from 'passport';
import config from 'config';
import * as passportConfig from '../utils/passport' //this is passport.ts which was pasted above
const router = Router();
router.get('/google', passport.authenticate('google', {scope: config.get('googleAuth.scope')}));
我知道我错过了回调路由,但是我在完成这项工作时遇到了问题,因为我不确定在 passport.ts 中定义的具有策略的护照对象如何在不同的文件中使用。
任何帮助都会很棒!