2017-01-23 3 views
0

Ich habe versucht, dies für mehrere Tage zu lösen. Ich folgte dem Tutorial in Auth0's Dokumentation.Decoding das Token gibt kein Benutzerprofil

Nach der Decodierung des Tokens mit Express-jwt:

export let headerJWTCheck = expressJwt({ 
    secret: '*************************', 
    audience: '******************************' 
}); 

der Gehalt an req.user nicht über das Profil und die Rollen, die ich für Rolleneinschränkungen in der API benötigen.

Stattdessen ist der Inhalt in der Form:

{ iss: 'https://******.eu.auth0.com/', 
    sub: 'google-oauth2|***********************', 
    aud: '********************', 
    exp: **************, 
    iat: **************} 

Im vorderen Ende mir bereits die Benutzerprofilinformationen Ich brauche, aber ich kann darüber hinaus nicht fortschreiten.

Ich verwende eine Funktion, um die Rollen zu Beschrän:

export function requireRole(role: string) { 
return function (req, res, next) { 
    console.log(req.user); 
    var appMetadata = req.user.profile._json.app_metadata || {}; 
    var roles = appMetadata.roles || []; 

    if (roles.indexOf(role) != -1) { 
     next(); 
    } else { 
     res.redirect('/unauthorized'); 
    } 
} 

aber req.user.profile ist immer undefiniert.

Im Haupt express Anwendungsdefinition ich habe:

app.use(cookieParser()); 
app.use(session({ 
    ................. 
})); 
configurePassport(); 

app.use(passport.initialize()); 
app.use(passport.session()); 

Antwort

0

Die Lösung wurde den folgenden Code die auth0 Blockier Konfiguration hinzuzufügen:

auth: { 
    params: { 
     scope: 'openid app_metadata roles' 
    } 
} 

der das app_metadata hinzugefügt und die Rollen Array req.user nach dem Decodieren des Tokens.

1

Die express-jwt Bibliothek req.user Initialisierung basierend auf dem Inhalt des Tokens, die in dem Antrag enthalten war.

Wenn Sie Informationen unter req.user benötigen, müssen Sie entweder include that information directly on the token oder eine Anreicherung von req.user durchführen, bevor Sie die Rollenprüfungen ausführen. Sie könnten beispielsweise req.user anreichern, indem Sie zusätzlichen Code ausführen, der die Rollen basierend auf dem Anspruch sub (Benutzer-ID) abruft.

+0

Danke für die Einstellung in die richtige Richtung. :) –