2017-01-23 63 views
0

我一直在試圖解決這個問題好幾天。 我遵循Auth0文檔中的教程。解碼令牌不會給用戶配置文件

令牌與快遞,智威湯遜解碼後:

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鎖配置:

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

哪加入app_metadata和角色陣列req.user令牌解碼之後。

1

express-jwt庫是基於令牌的是被列入請求內容初始化req.user

如果您需要req.user級別的信息,您需要include that information directly on the token或在運行角色檢查前進行富集req.user。例如,您可以通過運行其他代碼(基於sub聲明(用戶標識符)獲取角色)來豐富req.user

+0

謝謝你讓我朝着正確的方向前進。 :) –

相關問題