Node js中的序列化和反序列化

时间:2019-05-08 13:56:15

标签: node.js serialization deserialization passport-local express-session

我已经在Express中实现了快速会话,护照认证

在我的代码中,我使用了静态信息来验证详细信息

我没有得到的第一件事是快递会议和护照会议是分开工作还是组合工作。

第二件事是当调用password.deserializeUser()函数并且万一令牌不匹配时,我不想运行/ data API,但它仍在运行

第三点,如果用户没有登录并运行/ data API,那么是否有任何方法可以检查会话当前是否正在进行,以便我的函数可以拒绝权限

Server.js

            const express=require('express');
            const expressSsn=require('express-session');
            const passportSsn=require('passport-session');
            const bodyparser = require('body-parser');
            const app= express();
            const passport = require('passport');
            const localstrategy = require('passport-Local').Strategy;
            const user =require("../passport-demo/user");

            app.use(bodyparser.json());
            app.use(expressSsn({
                secret : 'ok',
                saveUninitialized : false,
                resave : true,
            }));

            app.use(passport.initialize());
            app.use(passport.session());

            passport.serializeUser(function(usr,done){
                console.log("Serialized method");
                console.log(usr);

                done(null,usr.token);
            });

            passport.deserializeUser(function(usr,done){

                console.log("Deserialized method");
                if(usr==user.token)
                {
                    console.log("Get Called  = ");
                    done(null,user);
                }
                else
                {
                    console.log("Token not matched");
                    console.log(done(null,false));
                }
            });

            passport.use(new localstrategy(
                {
                    usernameField : 'username',
                    passwordField : 'password'
                },
                function(username,password,done)
                {
                        if(username == user.username && password == user.password)
                        {
                            console.log("Correct Password");
                            return done(null,user,{message : 'correct Password' });
                        }
                        else
                        {
                            console.log("Incorrect Password");
                            return done(null,false);
                        }
                }
            ));

            app.post('/',function(req,res,err)
            {
                console.log(user);
            });

            app.post('/login',passport.authenticate('local')
                ,function (req,res,err)
                {
                            res.send("Request : "+req.user.username);
                });

            app.post('/data',function(req,res,err)
            {
                console.log(req);
            });


            app.listen(3000,console.log('host is running at 3000'));

user.js

    module.exports = {

        username : "Anshul996",
        password : "hello",
        firstname : 'Anshul',
        lastname : 'Negi',
        dob : '12/01/1996',
        email : 'anshulnegi996@gmail.com',
        token : 1234
    };

0 个答案:

没有答案