我正在使用带有 hapi-auth-basic 的 hapijs 并尝试使用节点检查器进行调试。
在 github 页面上实现的示例稍作修改,要求在 /login 路径上进行基本身份验证,而不是全部获取:
const validate = function(username, password, callback) {
const user = users['john']; //john exists in a user array
if (!user) {
return callback(null, false);
}
callback(null, true, {
id: user.id,
name: user.name
});
};
...
server.register(require('hapi-auth-basic'), (err) => {
server.auth.strategy('simple', 'basic', {
validateFunc: validate
});
});
{
method: 'POST',
path: '/login',
config: {
auth: 'simple',
handler: require('../../public/api/handlers/login.js')
}
}
所有其他路由设置为 auth: false。我知道它应用了“简单”策略,因为如果我将 /login 的 auth 设置为 false,我会在 login.js 文件中遇到断点。
问题是我在调用中得到 401,并且我从未在 validate 函数中遇到断点。
编辑:标头由客户端发送为:
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:accept, content-type
Access-Control-Request-Method:POST
Connection:keep-alive
Host:localhost:3000
Origin:http://mac.local:3000
Referer:http://mac.local:3000/ User-Agent:Mozilla/5.0
(Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36
内容为:
{"email":"a.b@com","password":"xcvx"}
我可能误解的是基本身份验证中的步骤。作为登录 POST,我是否需要发送 Authorization 标头?我认为这个页面会发送要处理的有效负载,然后如果成功,所有其他请求都会传递一些令牌,例如 jwt,包括授权标头。
我正在测试 aurelia-auth。进行调用的方法似乎没有设置任何标题。我需要配置任何设置吗?