首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试获取会话数据时,从一条路由工作并不能从另一条路由工作。

尝试获取会话数据时,从一条路由工作并不能从另一条路由工作。
EN

Stack Overflow用户
提问于 2022-04-20 10:03:18
回答 1查看 40关注 0票数 0

我正在尝试获取会话数据,使用护照js。当我使用/test或/test2路由时,我会得到会话数据。如果我在这些路由中尝试console.log,我将得到整个会话数据。但是当我尝试使用/user_data时,我似乎没有得到预期的响应。我哪里出问题了?我正在使用passport.js和快速会话。在通过/user_data路由时,我得到以下输出:

代码语言:javascript
复制
Session {
  cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true }
}

这是我正在使用的代码,从现在开始,它相当脏,因为我正在尝试修改。

代码语言:javascript
复制
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}!`))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-20 17:03:24

理论上,user_data只是另一个端点,在此基础上,它应该像测试和test2一样工作。

但是,user_data可以是一个保留的名称。尝试将端点更改为其他端点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71937720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档