我很確定這個答案只對hapi-auth-jwt2有效。這就是說:
用戶憑證對象是每個客戶端請求。默認情況下,它們包含JWT中聲明中的任何內容(即憑證==解碼)。如果你想覆蓋這個行爲,或者添加任何額外的東西到證書對象中,你可以在你的validateFunc中做到這一點。 ValidateFunc需要一個回調函數,第三個參數是你想要的憑證對象。舉例來說,如果您的用戶角色是在你的智威湯遜一「的UserRole」要求,這裏是你如何把它添加到您的credentials.scope:
// in server.register()
server.auth.strategy("jwt", "jwt", {
key: publicKey,
validateFunc: validate,
verifyOptions: {
algorithms: ["RS256"]
}
});
// elsewhere
function validate(decoded, request, callback) {
decoded.scope = decoded.userRole;
return callback(null, true, decoded);
};
就是這樣。剩下的就是hapi-auth-jwt2。現在,在您的server.route()調用,如果你的配置對象設置爲:
config: {
auth: {
strategy: "jwt",
scope: ["Manager", "Developer"]
}
}
...那麼只能與他們的任何要求的UserRole這些字符串將能夠訪問JWTs請求路線。