2017-01-23 5 views
0

私はこれを数日間解決しようとしています。 私はAuth0のドキュメントのチュートリアルに従いました。急行-JWTでトークンをデコードした後トークンを解読してもユーザープロフィールはありません

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

req.userの内容は、私がAPIでロールの制限のために必要なプロファイルと役割を持っていません。

代わりにコンテンツの形式である:フロントエンドで

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

私はすでに私が必要とするユーザプロファイル情報を取得し、私はそれを超えて進行することはできません。

私は役割をrestricする機能を使用しています:

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'); 
    } 
} 

しかしreq.user.profileは常に定義されていません。

私は主Expressアプリケーション定義において:

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

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

答えて

0

溶液は、次のコードauth0ロック構成を追加することでした。

1

express-jwtライブラリは、要求に含まれたトークンの内容に基づいてreq.userを初期化されています。

レベルがreq.userの場合は、include that information directly on the tokenにするか、ロールチェックを実行する前にreq.userにしてください。たとえば、クレーム(ユーザー識別子)に基づいて役割を取得する追加のコードを実行して、req.userを強化することができます。トークンを復号した後req.userにapp_metadataとロールアレイを加え

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

+0

私を正しい方向に向けてくれてありがとう。 :) –

関連する問題