【发布时间】:2015-10-17 23:51:44
【问题描述】:
我创建了这个简单的插件:
import bcrypt from 'bcrypt';
import Joi from 'joi';
import DynamoDBClient from '../lib/DynamoDBClient';
exports.register = (server, options, next) => {
server.auth.strategy('simple', 'basic', {
validateFunc: (request, email, password, callback) => {
DynamoDBClient.findUserByEmail(email)
.then(user => {
if (!user) {
return callback(null, false);
}
bcrypt.compare(password, user.password, (err, isValid) => {
return callback(err, isValid, { id: user.id });
});
});
}
});
server.route({
method: 'POST',
path: '/api/login',
config: {
auth: 'simple',
validate: {
payload: {
email: Joi.string().required(),
password: Joi.string().required()
}
}
},
handler: (request, reply) => reply(request.auth.credentials.id)
});
next();
};
exports.register.attributes = {
name: 'login',
};
并在此处加载清单:
import Glue from 'glue';
const manifest = {
server: {},
connections: [
{
port: process.env.PORT || 3001,
labels: ['api']
}
],
plugins: {
'hapi-auth-basic': {},
'./api/signup': {},
'./api/login': {},
'./api/products': {},
}
};
const options = {
relativeTo: __dirname
};
Glue.compose(manifest, options, (err, server) => {
if (err) {
throw err;
}
server.start(() => console.log(`Listening to ${server.info.uri}`));
});
但我收到此错误
{
"statusCode": 401,
"error": "Unauthorized",
"message": "Missing authentication"
}
当我尝试使用电子邮件和密码作为正文参数的 POST 请求登录时。
【问题讨论】:
标签: javascript node.js authentication hapijs