护照认证传递变量"/>
通过护照认证传递变量
我正在使用 Netlify 上运行的 PassportJS 通过 OAuth 对外部网站进行用户身份验证。我已经成功地进行了身份验证,但我完全困惑于需要传递一个指示请求的最终处理的变量(returnToUrl)。我的阅读表明我应该在会话中设置它,并且我正在这样做,但是该值不可用于回调。
这是我目前所拥有的:
const passport = require("passport");
const serverless = require('serverless-http');
const AmazonStrategy = require("passport-amazon").Strategy;
const express = require("express");
const session = require('express-session')
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
passport.serializeUser((user, done) => {
done(null, user);
});
passport.deserializeUser((user, done) => {
done(null, user);
});
app.use(session({
secret: "xxxxxxxx" ,
resave: true,
saveUninitialized: true
}));
app.use(passport.initialize());
app.use(passport.session());
passport.use(new AmazonStrategy({
clientID: process.env['AMAZON_CLIENT_ID'],
clientSecret: process.env['AMAZON_CLIENT_SECRET'],
callbackURL: AUTH_BASE + "/amazon/callback",
scope: ['profile']
},
function(accessToken, refreshToken, profile, done) {
let user = profile
return done(null, user);
}
)
);
app.get('/auth/amazon',
(req,res,next) => {
req.session.returnToUrl = req.originalUrl;
console.log('try amazon auth, req.session is', req.session); // session includes the returnToUrl value
passport.authenticate('amazon')(req,res,next)
}
);
app.get('/auth/amazon/callback',
passport.authenticate('amazon', { scope: ['profile', 'postal_code'], failureRedirect: '/login', failureMessage: true}),
(req, res, next) => {
console.log('req.session is is', req.session); // session is present, minus returnToUrl
console.log('data received',req.session.returnToUrl); // This returns UNDEFINED
res.redirect('/auth');
}
);
app.get('/auth', async (req, res) => {
// some stuff removed
console.log('data received at /auth',req.session.returnToUrl) ; UNDEFINED
}
如有任何帮助,我们将不胜感激!
回答如下:更多推荐
通过护照认证传递变量
发布评论