Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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
Node.js Passport.js会话混淆_Node.js_Express_Passport.js - Fatal编程技术网

Node.js Passport.js会话混淆

Node.js Passport.js会话混淆,node.js,express,passport.js,Node.js,Express,Passport.js,我正在学习node和express。我正在尝试构建一个非常基本的应用程序,它只允许用户使用json登录。然后将保持会话,直到他们注销。在asp.net中,这是一个小问题,您只需在配置中设置它并调用 Auth.Login(username,pasword) 当他们注销时,您只需执行以下操作: Auth.logout() 如果您需要检查他们是否已登录,只需执行以下操作: Auth.IsLoggedIn() 或是类似的代码。看来节点的Passport并不是那么简单。我花了一整晚的时间让它工作 a

我正在学习node和express。我正在尝试构建一个非常基本的应用程序,它只允许用户使用json登录。然后将保持会话,直到他们注销。在asp.net中,这是一个小问题,您只需在配置中设置它并调用

Auth.Login(username,pasword)
当他们注销时,您只需执行以下操作:

Auth.logout()
如果您需要检查他们是否已登录,只需执行以下操作:

Auth.IsLoggedIn()
或是类似的代码。看来节点的Passport并不是那么简单。我花了一整晚的时间让它工作

app.post('/authentication/login', function handleLocalAuthentication(req, res, next) {

    passport.authenticate('local', function(err, user, info) {

        // Manually establish the session...
        req.login({username:'me@me.com',password:'password'}, function(err) {
            if (err) return next(err);
            return res.json({
                message: 'user authenticated'
            });
        });

    })(req, res, next);
});

app.get('/authentication/isauthenticated',function(req,res){

    console.log(req.isAuthenticated());

})

passport.use(new LocalStrategy(
    function(username, password, done) {

        return done(null, {username:'ss',password:'sffds'});
    }
));
因此,现在我没有cookie,当我登录并点击
/authentication/isAuthenticated
url时,没有会话保持。我甚至无法在策略中找到断点来停止

passport.use(new LocalStrategy(
    function(username, password, done) {

        console.log('ggg');
        return done(null, {username:'ss',password:'sffds'});

    }
));
我看到的是错误的解决方案吗?我应该使用我自己的auth还是带有基本中间件功能的东西?

请检查。这真的很棒,对我帮助很大

这是我的repo,它通过mongoose对存储在mongodb中的用户实施了passport身份验证,并对密码进行了哈希处理。克隆它或只是检查它,它应该会有所帮助。
.

谢谢这真的帮了我的忙。我很高兴它帮了我。Thanks@thyforhtian“本教程”的链接似乎在passportjs中断开。使用会话或不使用会话是有意义的,这取决于您使用的策略。例如,在构建无状态API时,人们更喜欢基本策略而不是本地策略。还有@perlamq,上面提到了“本教程”的链接,我相信:教程已经不存在了。链接不工作@thyforhtian请更新答案