如果不对任何路由应用策略,hapi-auth-cookie
将保护所有路由,包括静态路由。
server.register(require('hapi-auth-cookie'), function (err) {
if (err) {
logError(err);
}
server.auth.strategy('session', 'cookie', true, {
password: 'things really long',
clearInvalid: true,
isSecure: false,
validateFunc: function (request, session, callback) {
cache.get(session.sid, (err, cached) => {
if (err) {
return callback(err, false);
}
if (!cached) {
return callback(null, false);
}
return callback(null, true, cached.account);
});
}
});
});
以下是我的路线:
{
method: 'POST',
path: '/api/1/doSomething',
config: {
validate: {
payload: someJoyObject
},
handler: function(request, reply) {
stuff
}
}
}
和
{
method: 'GET',
path: '/{param*}',
handler: {
directory: {
path: './public',
listing: false,
index: true
}
}
}
我无法加载我的应用的任何文件:
{"statusCode":401,"error":"Unauthorized","message":"Missing authentication"}
答案 0 :(得分:4)
查看documentation for server.auth.strategy()
。您传递true
作为第3个参数意味着hapi会默认将此策略应用于所有路由。
要为您的静态路线禁用它:
e.g:
{
method: 'GET',
path: '/{param*}',
config: {
auth: false
},
handler: {
directory: {
path: './public',
listing: false,
index: true
}
}
}