function extract(request, options) { // The key holding token value in url or cookie defaults to token var auth, token; var cookieKey = customOrDefaultKey(options, 'cookieKey', 'token'); var headerKey = customOrDefaultKey(options, 'headerKey', 'authorization'); var urlKey = customOrDefaultKey(options, 'urlKey', 'token'); var pattern = new RegExp(options.tokenType + '\\s+([^$]+)', 'i'); if (urlKey && request.query[urlKey]) { // tokens via url: https://github.com/dwyl/hapi-auth-jwt2/issues/19 auth = request.query[urlKey]; } else if (headerKey && request.headers[headerKey]) { if (typeof options.tokenType === 'string') { token = request.headers[headerKey].match(pattern); auth = token === null ? null : token[1]; } else { auth = request.headers[headerKey]; } // JWT tokens in cookie: https://github.com/dwyl/hapi-auth-jwt2/issues/55 } else if (cookieKey && request.headers.cookie) { auth = Cookie.parse(request.headers.cookie)[cookieKey]; } // strip pointless "Bearer " label & any whitespace > http://git.io/xP4F return auth ? auth.replace(/Bearer/gi, '').replace(/ /g, '') : null; }
n/a
register = function (server, options, next) { server.auth.scheme('jwt', internals.implementation); // hapijs.com/api#serverauthapi return next(); }
...
return callback(null, true);
}
};
var server = new Hapi.Server();
server.connection({ port: 8000 });
// include our module here ↓↓
server.register(require('hapi-auth-jwt2'), function (err) {
if(err){
console.log(err);
}
server.auth.strategy('jwt', 'jwt',
{ key: 'NeverShareYourSecret', // Never Share your secret key
...
function extract(request, options) { // The key holding token value in url or cookie defaults to token var auth, token; var cookieKey = customOrDefaultKey(options, 'cookieKey', 'token'); var headerKey = customOrDefaultKey(options, 'headerKey', 'authorization'); var urlKey = customOrDefaultKey(options, 'urlKey', 'token'); var pattern = new RegExp(options.tokenType + '\\s+([^$]+)', 'i'); if (urlKey && request.query[urlKey]) { // tokens via url: https://github.com/dwyl/hapi-auth-jwt2/issues/19 auth = request.query[urlKey]; } else if (headerKey && request.headers[headerKey]) { if (typeof options.tokenType === 'string') { token = request.headers[headerKey].match(pattern); auth = token === null ? null : token[1]; } else { auth = request.headers[headerKey]; } // JWT tokens in cookie: https://github.com/dwyl/hapi-auth-jwt2/issues/55 } else if (cookieKey && request.headers.cookie) { auth = Cookie.parse(request.headers.cookie)[cookieKey]; } // strip pointless "Bearer " label & any whitespace > http://git.io/xP4F return auth ? auth.replace(/Bearer/gi, '').replace(/ /g, '') : null; }
n/a
function isValid(token) { return token.split('.').length === 3; }
n/a