我正在Node.js
用作iPhone客户端的后端API服务器。我正在使用Passport.js
进行身份验证local strategy
。相关代码如下:
// This is in user.js, my user model
UserSchema.static('authenticate', function(username, password, callback) {
this.findOne({ username: username }, function(err, user) {
if (err){
console.log('findOne error occurred');
return callback(err);
}
if (!user){
return callback(null, false);
}
user.verifyPassword(password, function(err, passwordCorrect){
if (err){
console.log('verifyPassword error occurred');
return callback(err);
}
if (!passwordCorrect){
console.log('Wrong password');
return callback(err, false);
}
console.log('User Found, returning user');
return callback(null, user);
});
});
});
和
// This is in app.js
app.get('/loginfail', function(req, res){
res.json(403, {message: 'Invalid username/password'});
});
app.post('/login',
passport.authenticate('local', { failureRedirect: '/loginfail', failureFlash: false }),
function(req, res) {
res.redirect('/');
});
现在,我设法将失败的登录重定向到/
loginfail,在那里我将一些JSON发送回iPhone客户端。但是,这没有足够的粒度。我希望能够将适当的错误发送回iPhone客户端,例如:“找不到用户”或“密码错误”。用我现有的代码,我看不到如何实现。
我尝试按照示例进行操作,以完成passport.js网站上的自定义回调,但是由于缺乏节点理解,所以我无法使其正常工作。如何修改代码,以便能够发送带有适当错误代码/消息的res.json?
编辑:我现在正在尝试这样的事情:
// In app.js
app.post('/login', function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) { return next(err) }
if (!user) {
console.log(info);
// *** Display message without using flash option
// re-render the login form with a message
return res.redirect('/login');
}
console.log('got user');
return res.json(200, {user_id: user._id});
})(req, res, next);
});
// In user.js
UserSchema.static('authenticate', function(username, password, callback) {
this.findOne({ username: username }, function(err, user) {
if (err){
console.log('findOne error occurred');
return callback(err);
}
if (!user){
return callback(null, false);
}
user.verifyPassword(password, function(err, passwordCorrect){
if (err){
return callback(err);
}
if (!passwordCorrect){
return callback(err, false, {message: 'bad password'});
}
console.log('User Found, returning user');
return callback(null, user);
});
});
});
但是回到当我尝试console.log(info)时,它只是说未定义。我不知道如何使此自定义回调工作…任何帮助将不胜感激!
我相信您的“身份验证”静态调用(在代码中称为“回调”)的回调函数接受代码可以提供的第三个参数-“
info”。然后,而不是传入{failureRedirect:…}对象,而是传入一个带有3个参数的函数-
err,user和info。您在authenticate方法中提供的“信息”将传递给此回调。
Passport将此情况称为“自定义回调”。请参阅此处的文档:http
:
//passportjs.org/guide/authenticate/
Tweepy API请求twitter return me Twitter错误响应:状态代码=401。 这是我的实际代码: 我曾试图用tweepy软件包删除推文,并获得了所有必需的密钥。镊子包装不起作用吗?有人能帮我解决这个问题吗。
每次我尝试用Pycharm在GitHub中推送一个存储库时,它都会失败。 在Settings->Version Control->Git中,Git可执行文件的路径是用完整路径设置的,SSH可执行文件:Buil-in Win 7上的Pycharm版本3.1.1 Git版本1.8.4.msysgit.0。
问题内容: 尝试使用JavaMail中的NTLM连接到Exchange服务器。我可以连接到SMTP,但不能连接到IMAP。我还可以使用相同的主机/用户名/密码通过OS X Mail.app应用程序进行身份验证,帐户类型=“ IMAP”,端口143,ssl = false,authentication = NTLM,域名=“。 连接代码: 输出: 我尝试通过http://www.oracle.com
我相对来说是JMeter的新手,但是我很难让HTTP Sampler登陆到一个安全的网页上。我认为它需要NTLM认证,所以我使用HTTP授权管理器来传递BlazeMeter指南中指定的凭证 我的授权管理器具有以下值: 基本网址: https:// [测试站点] 用户名: [我的用户名] 密码: [我的密码] 域:与基本网址相同 机制: BASIC_DIGEST 然而,我只是得到一个401错误(见下
我已经使用GitHub有一段时间了,我对,和都很好,到目前为止没有任何问题。突然我有一个错误,说: 致命:身份验证失败 在终端中,我克隆了一个存储库,处理了一个文件,然后使用将文件添加到提交日志中,当我执行时,它工作得很好。最后,要求输入用户名和密码。我把它们正确地放进去,每次我这样做,它都会说同样的错误。 这个问题的原因是什么,我该如何解决? 是:
我使用Github已经有一段时间了,使用、和都很好,到目前为止没有任何问题。突然我有一个错误说: 致命:身份验证失败 在终端中,我克隆了一个存储库,处理了一个文件,然后使用将文件添加到提交日志中,当我执行时,它工作得很好。最后,询问用户名和密码。我把那些正确地放进去,每次我这样做,它说同样的错误。 有没有人知道这个问题的原因是什么,我该怎么修复它? 的内容是: