Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反序列化不会发生_Javascript_Node.js_Passport.js - Fatal编程技术网

Javascript 反序列化不会发生

Javascript 反序列化不会发生,javascript,node.js,passport.js,Javascript,Node.js,Passport.js,我尝试使用passport.js在我的应用程序上进行身份验证(我使用带有REST API的passport.js,在后端没有一些重定向)。但反序列化不会发生。请帮帮我。这是我的代码: 它是序列化和反序列化 passport.serializeUser((user, done) => { console.log('serializeUser: ', user); done(null, user._id); }); passport.deserializeUser((id,

我尝试使用passport.js在我的应用程序上进行身份验证(我使用带有REST API的passport.js,在后端没有一些重定向)。但反序列化不会发生。请帮帮我。这是我的代码: 它是序列化和反序列化

passport.serializeUser((user, done) => {
    console.log('serializeUser: ', user);
    done(null, user._id);
});

passport.deserializeUser((id, done) => {
    console.log('deserializeUser: ', id);
    User.findById(id, function (err, user) {
        done(err, user);
    });
});
我的中间件:

app.use(
    expressSession({
        secret: 'top_secret',
        store: new FileStore(),
        cookie: {
            path: '/',
            httpOnly: true,
            maxAge: 60 * 60 * 1000,
        },
        resave: false,
        saveUninitialized: false,
    })
);

app.use(passport.initialize());
app.use(passport.session());
我的策略:

const signIn = (passport) => {
    passport.use(
        'signin',
        new LocalStrategy(
            {
                usernameField: 'email',
                passwordField: 'password',
            },
            (email, password, done) => {
                User.findOne({ email }, (err, user) => {
                    if (err) return done(err);

                    if (!user) {
                        return done(null);
                    }

                    if (!isValidPassword(user, password)) {
                        return done(null);
                    }

                    return done(null, user);
                });
            }
        )
    );
};
我的控制器:

const handleSignIn = (req, res, next) => {
    passport.authenticate('signin', (err, user) => {
        if (err) return next(err);

        if (user) {
            req.logIn(user, (err) => {
                if (err) return next(err);

                res.send(req.user);
            });
        } else {
            res.status(HttpStatusCode.UNAUTHORIZED).send({ error: 'error with login or password' });
        }
    })(req, res, next);
};
在授权之后,我尝试从端点获取数据,并在那个里检查req.session.passport,但它是未定义的

    const handleGetUserData = async (req, res) => {
    console.log(req.session.passport); // undefined

    try {
        const data = await Users.getUser();
        res.status(HttpStatusCode.OK).send(data);
    } catch (error) {
        res.status(HttpStatusCode.INTERNAL_SERVER_ERROR).send({ error });
    }
};

您可以访问
req.user
中的护照数据吗?可以,我可以访问