【问题标题】:Authentication Issues with Profiles and session issues passport.js/Node.js配置文件的身份验证问题和会话问题 passport.js/Node.js
【发布时间】:2023-04-07 04:53:01
【问题描述】:

我目前正在尝试使用护照对我的 node.js Web 应用程序进行身份验证。但是,我遇到了正确存储会话数据的问题。目前,它根本没有被存储。

App.js

// required for passport
app.use(session({ secret: 'ilovescotchscotchyscotchscotch' })); // session secret
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
app.use(flash()); // use connect-flash for flash messages stored in session

passport.js

var users = [
{ id: 1, username: 'bob', password: 'secret', email: 'bob@example.com' },
{ id: 2, username: 'joe', password: 'birthday', email: 'joe@example.com' }
];

function findById(id, fn) {

    fn(null, users[1]);
}

module.exports = function(passport, db) {
 // used to serialize the user for the session
    passport.serializeUser(function(user, done) {
        console.log("serialization" + JSON.stringify(user, null, 4));
        done(null, user.personnel_id);
    });

    // used to deserialize the user
    passport.deserializeUser(function(id, done) {
      findById(id, function (err, user) {
            console.log("deserialization" + JSON.stringify(user, null, 4));

            done(err, user);
        });

    });

routes.js

    app.post('/login',  passport.authenticate('local-login', 
    { 
        successRedirect: '/profile',
        failureRedirect:'/login', 
        failureFlash: true,
        badRequestMessage: 'Please enter your account credentials to login.'
    }));
    // =====================================
    // PROFILE SECTION =====================
    // =====================================
    // we will want this protected so you have to be logged in to visit
    // we will use route middleware to verify this (the isLoggedIn function)
    app.get('/profile', isLoggedIn, function(req, res) {
        console.log("req query:" +  JSON.stringify(req.query, null, 4));
        console.log("req body:" +  JSON.stringify(req.body, null, 4));

        res.render('profile.jade', {
            user : req.user // get the user out of session and pass to template
        });
    });

在上面的代码中,下面的代码按这个顺序执行

  • 用户验证成功,因此调用 serialize 和 serialize。
  • 应用程序被重定向到所需的 /profiles,但请求为空。我期待反序列化数据出现在 req.body 中的某个位置,但我没有看到

我可能忽略了一些小事, 任何帮助表示赞赏, 谢谢, D

【问题讨论】:

    标签: node.js session express passport.js


    【解决方案1】:

    没关系。找到答案了。

    它存储在 req.session.passport...

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2019-05-03
      • 2020-09-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-20
      相关资源
      最近更新 更多