2017-08-02 112 views
1

在服务器端获取用户角色我有那些代码登录:如何从JWT令牌

return jsonify({'email': email, 'token': create_token(email, isAdmin, password)}) 

在客户端,我需要代码来检查登录和isAdmin。

isLogged() { 
if (localStorage.getItem('currentUser') && 
    JSON.parse(localStorage.getItem('currentUser')).email) { 
    return true; 
} 
return false; 
} 

isAdmin(){ 
    //??? 
} 

如何从令牌获取用户角色?

+0

您是否尝试过解码它看的权利要求? [看到这个问题](https://stackoverflow.com/questions/38552003/how-to-decode-jwt-token-in-javascript) – 0mpurdy

+0

我只有在服务器端,而不是客户端的密钥。 – DzouSi

+1

您不需要秘密密钥来解码有效负载。这是一个JSON对象base64url编码 – pedrofb

回答

5

说你有这个智威汤逊(example from here

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ 

你可以使用something like this对其进行解码:

let jwt = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ' 
 

 
let jwtData = jwt.split('.')[1] 
 
let decodedJwtJsonData = window.atob(jwtData) 
 
let decodedJwtData = JSON.parse(decodedJwtJsonData) 
 

 
let isAdmin = decodedJwtData.admin 
 

 
console.log('jwtData: ' + jwtData) 
 
console.log('decodedJwtJsonData: ' + decodedJwtJsonData) 
 
console.log('decodedJwtData: ' + decodedJwtData) 
 
console.log('Is admin: ' + isAdmin)