我正在嘗試使用護照 js 獲取會話資料。當我使用 /test 或 /test2 路由時,我得到了會話資料。如果我嘗試 console.log 這些路由,我會得到整個會話資料。但是當我嘗試使用 /user_data 時,我似乎沒有得到預期的回應。我在哪里錯了?我正在使用 passport.js 和快速會話。通過 /user_data 路由時,我得到以下輸出:
Session {
cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true }
}
這是我正在使用的代碼,到目前為止,它相當臟,因為我正在嘗試修補。
const express = require('express')
const app = express()
const session = require('express-session');
const port = 3000
const passport =require("passport")
const GoogleStrategy = require('passport-google-oauth2').Strategy;
const bodyParser = require("body-parser");
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(user, done) {
done(null, user);
});
passport.use(new GoogleStrategy({
clientID:"some.com",
clientSecret:"some_secret",
callbackURL: "http://localhost:3000/auth/google/callback",
passReqToCallback : true
},
function(request, accessToken, refreshToken, profile, done) {
return done(null, profile);
}
));
app.use(session({
resave: false,
saveUninitialized: true,
secret: 'SECRET'
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.get("/failed", (req, res) => {
res.send("Failed")
})
app.get("/success", (req, res) => {
res.send(`Welcome ${req.user.email}`)
})
app.get('/auth/google',
passport.authenticate('google', {
scope:
['email', 'profile']
}
));
app.get('/auth/google/callback',
passport.authenticate('google', {
failureRedirect: '/failed',
}),
function (req, res) {
res.redirect('/')
}
);
app.get("/test",(req,res)=>{
let sess = req.session;
console.log(sess);
var email=sess.passport.user.email;
var netid=email.split('@')[0];
req.session.netid=netid;
console.log(netid);
// console.log(sess.user.id);
res.send("test")
});
app.get("/test2",(req,res)=>{
let sess = req.session;
console.log(sess);
var netid=sess.netid;
console.log(netid);
res.send("test2")
});
app.get("/user_data",(req,res)=>{
var sess = req.session;
console.log(sess.passport);
res.send(sess.passport);
});
app.get('/logout', function(req, res){req.logOut();res.redirect('/');});
app.get('/', (req, res) => {res.sendFile(__dirname "/pages/index.html");})
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
uj5u.com熱心網友回復:
理論上 user_data 只是另一個端點,在此基礎上它應該像 test 和 test2 一樣作業。
但是,user_data 可以是保留名稱。嘗試將該端點更改為其他內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/460590.html
標籤:节点.js 表示 oauth-2.0 护照.js 会话变量
上一篇:Express.js應用程式錯誤:無法讀取未定義的屬性(讀取'transfer-encoding'
下一篇:更新螢屏而不重新加載