gpt4 book ai didi

node.js - 使用 Passport 授权时设置 Postman 进行 API 测试

转载 作者:搜寻专家 更新时间:2023-10-31 22:41:52 25 4
gpt4 key购买 nike

在测试我的应用程序的 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, path, nodemailer, sesTransport, EmailTemplate, templateDir, 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 },
function(err, 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, false, req.flash('message', '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);
}
}

最佳答案

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

请求访问 token ;假设您的端点是 auth/local。

  1. 打开 Postman
  2. 创建一个 POST 请求
  3. 在授权选项卡下设置“无授权”
  4. 在 body 选项卡下 -> 点击 x-www-form-urlencoded
  5. 添加一个名为email的键并输入用户邮箱
  6. 添加一个名为 password 的 key 并输入电子邮件的相关密码

请参阅下面的 token 请求屏幕截图:

localAuthentication

响应将返回一个 access_token。

要使用 access_token,只需创建一个 HTTP 请求,并在 HEADER 选项卡中,添加 key Authorization 后跟值“Bearer

查看使用 token 请求截图: enter image description here

关于node.js - 使用 Passport 授权时设置 Postman 进行 API 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38779992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com