使用请求和护照npm登录帐户

汤姆

我正在为一个项目使用nodejs,现在我想用护照npm登录我的帐户,但不是从网页,从请求发布方法登录,可以吗?

像这样的主要代码:

router.post('/login',function(req, res, next) {
    passport.authenticate('local', function(err, user, info) {
        if (err) { return next(err); }
        if (!user) { return res.json(null); }

        req.logIn(user, function(err) {
            if (err) { return next(err); }
            //return res.redirect('/'); redirect not work 
        });
    })(req, res, next);
});

router.get('/check',function(req, res, next) {
    request.post({
       url:'http://localhost/login',
       headers:{
            'Content-Type': 'application/x-www-form-urlencoded'
       },
       form:{
       username:'myname',
       password:'mypassword'
    }},function(err,httpRes,body){
        //do here...?
        return res.redirect('/');
    });
});

当我使用get方法调用“ check”并使用正确的用户名/密码时,我可以通过“ login”方法从数据库中打印出用户数据,但是在重定向首页时丢失了用户会话。有什么建议吗?

拉加拉瓦拉

当用户GET时,它不会重定向用户,/check因为/loginin的POST请求/check本身即已重定向,而不是实际用户。另外,向内部网页发出内部请求也不是登录的最佳解决方案。我建议像这样创建login() 中间件

// Don't forget to set req.body.username and req.body.password when calling login().
var login = function login(req, res, next) {
  passport.authenticate('local', function(err, user, info) {
    if (err) { return next(err); }
    if (!user) { return next(); }

    req.logIn(user, function(err) {
        if (err) { return next(err); }

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

然后适当地调用它:

router.post('/login', login, function(req, res, next) {
  if (req.user) {
    console.log('We logged in successfully!');
    res.redirect('/');
  } else {
    res.json(null);
  }
});

router.get('/check', function(req, res, next) {
  if (!req.user) {
    login(req, res, function(err) {
      if (err) {
        return next(err);
      }

      if (!req.user) {
        // No user, do some error handling.
      } else {
        // We have the user, do some custom stuff...
      }

      res.redirect('/');
    });
  } else {
    // User is logged in already, do some other custom stuff...
  }
});

您可以通过检查是否req.user存在来检查用户是否已登录

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用护照登录社交日志用户到同一帐户

来自分类Dev

护照。使用本地登录地址重新登录

来自分类Dev

无法使用python中的请求登录我的nytimes帐户

来自分类Dev

使用护照登录node.js

来自分类Dev

用户使用护照注册后登录

来自分类Dev

使用Box帐户登录

来自分类Dev

使用root帐户登录

来自分类Dev

护照:登录POST请求将用户对象返回为String

来自分类Dev

如何使用log4j登录xfire以获取XML SOAP中的请求和响应

来自分类Dev

抓取“ __hpKey”的网站,然后在python中使用请求和beautifulsoup登录

来自分类Dev

Android:使用Google帐户登录?

来自分类Dev

使用Google帐户登录Chrome

来自分类Dev

如何使用护照ldapauth登录时显示Flash消息

来自分类Dev

回送护照登录

来自分类Dev

nodejs护照登录

来自分类Dev

无法使用其他帐户或“使用其他帐户”登录

来自分类Dev

在Jmeter中安排登录,发布请求和注销

来自分类Dev

使用组织帐户而不是Microsoft帐户登录Visual Studio

来自分类Dev

请使用您的GNOME帐户(在线帐户)登录

来自分类Dev

使用Facebook登录名和本地登录名的ExpressJS护照

来自分类Dev

使用Facebook登录名和本地登录名的ExpressJS护照

来自分类Dev

无法使用pidgin登录到Facebook帐户

来自分类Dev

使用gcloud服务帐户登录Firebase

来自分类Dev

无法使用pidgin登录到Facebook帐户

来自分类Dev

无法使用终端登录我的帐户

来自分类Dev

使用powershell登录azure帐户而不弹出

来自分类Dev

使用多个 Google 帐户进行后续登录

来自分类Dev

护照登录重定向

来自分类Dev

护照登录重定向