【发布时间】:2023-02-24 03:44:04
【问题描述】:
我已经开始将 express 项目转换为 nestjs。它应该如何在 Nestjs 中工作。这是 Express 的工作代码。 (下面的代码只是重定向到 Steam 登录页面)
/* eslint-disable space-before-function-paren */
// Require all the installs
var express = require('express');
var passport = require('passport');
var session = require('express-session');
var passportSteam = require('passport-steam');
var SteamStrategy = passportSteam.Strategy;
var app = express();
// Let's set a port
var port = 4000;
// Spin up the server
app.listen(port, () => {
console.log('Listening, port ' + port);
});
// Set up the SteamStrategy
// Required to get data from user for sessions
passport.serializeUser((user, done) => {
done(null, user);
});
passport.deserializeUser((user, done) => {
done(null, user);
});
// Initiate Strategy
passport.use(
new SteamStrategy(
{
returnURL: 'http://localhost:' + port + '/api/auth/steam/return',
realm: 'http://localhost:' + port + '/',
apiKey: 'My API key',
},
function (identifier, profile, done) {
process.nextTick(function () {
profile.identifier = identifier;
return done(null, profile);
});
}
)
);
app.use(
session({
secret: 'Whatever_You_Want',
saveUninitialized: true,
resave: false,
cookie: {
maxAge: 3600000,
},
})
);
app.use(passport.initialize());
app.use(passport.session());
// Routes
app.get('/', (req, res) => {
res.send(req.user);
});
app.get(
'/api/auth/steam',
passport.authenticate('steam', { failureRedirect: '/' }),
function (req, res) {
res.redirect('/');
}
);
app.get(
'/api/auth/steam/return',
passport.authenticate('steam', { failureRedirect: '/' }),
function (req, res) {
res.redirect('/');
}
);
问题是如何在 nestjs 中实现相同的??? 或者,如果我想为护照库(serializeUser、deserializeUser)实现中间件,它应该如何发生,在 nest 官方文档中我找到了自定义中间件的示例
export function logger(req: Request, res: Response, next: NextFunction) {
console.log(`Request...`);
next();
};
但是我应该如何使用护照中间件
【问题讨论】:
-
你可能会在here找到你的答案
标签: javascript express nestjs passport.js