当调用hapi-auth-basic验证函数时

时间:2015-11-20 00:16:19

标签: javascript node.js hapijs aurelia-auth

我正在使用hapi-auth-basic的hapijs并尝试使用node-inspector进行调试。

在github页面上实现了一些示例,稍加修改,需要基本的auth on / 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,而且我从未在验证功能中获得断点。

编辑: 标题由客户发送:

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标头在内的某些令牌产生影响。

我正在测试aurelia-auth。使call的方法似乎没有设置任何标头。我是否需要配置任何设置?

1 个答案:

答案 0 :(得分:0)

我在案件中发现了问题。

  1. 我正在尝试验证"登录"使用hapi-auth-basic进行POST。这意味着它需要先前设置的身份验证密钥。但它不应该那样工作。您可以通过https发送有效负载中的用户名和密码以覆盖您的曲目。然后服务器说OK,并用您的加密标识发回auth标头。然后,您使用此标头拨打任何限制'领域

  2. 我正在组合' jwt'与基本'的方式没有充分理由的方式。

  3. 第3课。阅读github源代码!