Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 使用Passport授权时设置用于API测试的邮递员大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在测试我的应用程序的API时,我试图让Postman工作时有点困惑.即,我正在使用Passport身份验证;但是,我不知道它在我的代码认使用哪种类型.我怎么能弄明白这一点以及我应该在Postman中选择哪种类型?

这是相关的Passport代码

var login = require('./login');
var signup = require('./signup');
var User = require('../models/user');

module.exports = function(passport,path,nodemailer,sesTransport,EmailTemplate,templateDir,templatE){

    // Passport needs to be able to serialize and deserialize users to support persistent login sessions
    passport.serializeUser(function(user,donE) {
        //console.log('serializing user: ');console.log(user);
        done(null,user._id);
    });

    passport.deserializeUser(function(id,donE) {
        User.findById(id,function(err,user) {
            //console.log('deserializing user:',user);
            done(err,user);
        });
    });

    // SetTing up Passport Strategies for Login and SignUp/Registration
    login(passport);
    signup(passport,templatE);

}

最后,几乎所有的API点都只在用户登录时才有效.如何通过保存授权凭证来模拟Postman中的相同行为?

编辑:

Perhaps this code is relevant as well:


module.exports = function(passport){

    passport.use('login',new LocalStrategy({
            passReqToCallBACk : true,usernameField: 'email',passwordField: 'password'
        },function(req,username,password,donE) { 
            // check in mongo if a user with username exists or not
            User.findOne({ 'email' :  username },user) {
                    // In case of any error,return using the done method
                    if (err)
                        return done(err);
                    // Username does not exist,log the error and redirect BACk
                    if (!user){
                        console.log('User Not Found with username '+userName);
                        return done(null,false,req.flash('message','User Not found.'));                 
                    }
                    // User exists but wrong password,log the error 
                    if (!isValidpassword(user,password)){
                        console.log('Invalid password');
                        return done(null,'Invalid password')); // redirect BACk to login page
                    }
                    // User and password both match,return user from done method
                    // which will be treated like success
                    return done(null,user);
                }
            );

        })
    );


    var isValidpassword = function(user,password){
        return bCrypt.compareSync(password,user.password);
    }  
}

解决方法

我没有运行本地身份验证策略的代码,但我认为以下邮递员设置应该适合您.

要求访问令牌;假设您的端点是auth / local.

>打开邮差
>创建一个POST请求
>在授权标签下设置“No Auth”
>在正文标签下 – >点击x-www-form-urlencoded
>@L_489_10@一个名为email的密钥并输入用户电子邮件
>@L_489_10@一个名为密码的密钥,并输入电子邮件的相关密码

请参阅下面的令牌请求屏幕

node.js – 使用Passport授权时设置用于API测试的邮递员

响应将返回access_token.

要使用access_token,只需创建一个http请求,然后在HEADER选项卡中@L_489_10@密钥Authorization,后跟值“Bearer”

请参阅使用令牌请求屏幕截

node.js – 使用Passport授权时设置用于API测试的邮递员

大佬总结

以上是大佬教程为你收集整理的node.js – 使用Passport授权时设置用于API测试的邮递员全部内容,希望文章能够帮你解决node.js – 使用Passport授权时设置用于API测试的邮递员所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。