当前位置: 首页 > 知识库问答 >
问题:

如何正确设置服务器登录代码?

范翰海
2023-03-14

我正试图以这种方式使用passport local设置登录页面,但它不起作用:

节点服务器端:

// mongoose
var User = mongoose.model('User', userSchema);
User.find({}).exec(function(err, collection){
    if(collection.length === 0) {
        User.create({identifiant: '123', motDePasse: '123'});
    }
});

// passport-local
passport.use(new LocalStrategy(
    function(identifiant, motDePasse, done) {
        console.log(identifiant); // It's not logging
        User.findOne({identifiant:identifiant}).exec(function(err, user) {
            if(user) {
                return done(null, user);
            } else {
                return done(null, false);
            }
        })
    }
));
passport.serializeUser(function(user, done) {
    if(user) {
        done(null, user._id);
    }
});
passport.deserializeUser(function(id, done) {
    User.findOne({_id:id}).exec(function(err, user) {
        if(user) {
            return done(null, user);
        } else {
            return done(null, false);
        }
    })
});

// route
app.post('/connexion', function(req, res, next){
    var auth = passport.authenticate('local', function(err, user) {
        if(err) {return next(err);}
        if(!user) {res.send({success: false});}
        req.logIn(user, function(err) {
            if(err) {return next(err);}
            res.send({success: true, user: user});
        })
    });
    auth(req, res, next);
});

角度客户端:

app.controller('uAsideLoginCtrl', function($scope, $http, uIdentity, uNotifier){
    $scope.identity = uIdentity;
    $scope.signin = function(identifiant, motDePasse){
        $http.post('/connexion', {identifiant: identifiant, motDePasse: motDePasse}).then(function(res){
            if(res.data.success) {
                uIdentity.currentUser = res.data.user;
                uNotifier.success("Vous êtes maintenant connecté!");
            } else {
                uNotifier.error("L'identifiant ou le mot-de-passe est incorrecte.");
            }
        });
    };
});

下面是mongoDB的用户行:

{"_id": ObjectId("53df7b3b769827786b32dafe"),"标识符":"123","motDePasse":"123","__v": 0}

我想它来自本地战略。我不知道console.log.结果

有什么好主意吗?

请问怎么了?

共有1个答案

邹山
2023-03-14

问题不在您显示的代码中。我的猜测是,您请求/connexion(我假设它是带有POST方法的常规表单)时使用的参数命名错误,因为您设置了自定义字段名。

从护照的官方文件:

默认情况下,LocalStrategy希望在名为username和password的参数中找到凭据。如果您的站点希望以不同的方式命名这些字段,则可以使用选项更改默认值。

passport.use(new LocalStrategy({
    usernameField: 'email',
    passwordField: 'passwd'
  },
  function(username, password, done) {
    // ...
  }
));

但是你的名字听起来很奇怪,你昨天不是问了一个类似的问题吗?我们帮了你,然后你删除了你的帖子?

 类似资料:
  • 现在,我正在尝试使用log4j2将所有具有信息级别或更高级别(警告、错误和致命)的内容记录到我的服务器,并将所有具有信息级别的内容记录到我的控制台。我能够把事情记录到我的控制台上,但是,我在正确地将正确的级别记录到服务器上时遇到了问题。 以下是我迄今为止尝试过的: Java XML 上面的代码没有输出我想要的,这是有INFO级别输出到控制台和INFO级别和向上输出到服务器。 相反,我能够输出:一切

  • 我需要你的帮助在这里创建一个虚拟主机在wampserver。在办公室里,我可以创建一个虚拟主机,但是当我试图在笔记本电脑上创建时,它不起作用。我仍然不知道出了什么问题。这是我做的。 > E:\Subversion\chelle。wpblog。本地的 我编辑主机文件 > 127.0.0.1chelle.wpblog.local 接下来是我在Apache中启用虚拟主机 > C:\wamp\bin\ap

  • 说明 当前文档是在H5 JS SDK的设置代理服务器基础之上进行的补充,请先查看H5 JS SDK中设置代理服务器的相关配置,根据H5 JS SDK配置完成之后,再继续根据当前文档进行配置。 Nginx代理服务器配置的补充 配置HTTPS 注意:应替换整个[xxx]形式,包括[]。 server { listen 443 ssl; server_name [域名];

  • 为解决浏览器中请求不同域名下的Linkface公有云接口,需要通过代理服务器进行代理转发。在代理服务器中我们可以加API_ID和API_SECRET包含在请求链接中,从而提高了客户账户的安全性。 由于在实际部署的时候,代理服务器和部署H5的服务器往往不会同域,所以用户可以在代理服务器上开启CORS。 也就是说,设置代理服务器主要是为了提高安全性以及解决前端js sdk跨域问题。 需要代理的接口列表

  • 嗨,我已经在CentOS 7上安装了wine(版本wine-3.0.2)来运行我的。vbs文件。但在运行时,它得到了以下错误。 你能帮我修一下这个吗。我对此不太了解

  • 使用以下命令登录 ftp服务器: lftp ftp://用户名[:密码]@服务器地址[:端口] #标准方式,推荐 lftp 用户名[:密码]@服务器地址[:端口] lftp 服务器地址 [-p 端口] -u 用户名[,密码] lftp 服务器地址[:端口] -u 用户名[,密码] 如果不指定端口,默认 21 如果不在命令中使用明文输入密码,连接时会询问密码(推荐) 可以使用“书签”收藏服务器