Angular 在typescript中解析/读取解码的jwt令牌数据
如何使用这个.jwtHelper.decodeToken(sessionStorage.getItem('encodedToken')解析下面的对象,它是一个解码的jwt令牌,并且需要从角色获得应用程序(QWE)的权限Angular 在typescript中解析/读取解码的jwt令牌数据,angular,typescript,jwt,Angular,Typescript,Jwt,如何使用这个.jwtHelper.decodeToken(sessionStorage.getItem('encodedToken')解析下面的对象,它是一个解码的jwt令牌,并且需要从角色获得应用程序(QWE)的权限 name:"ram8" roles:"{"userid":"991635","privileges":{"QWE":["QQT","RR","RRR","FCC","WWW","WRD","DML","UDE","SDE"]}}" sub:"123456" user.tenant
name:"ram8"
roles:"{"userid":"991635","privileges":{"QWE":["QQT","RR","RRR","FCC","WWW","WRD","DML","UDE","SDE"]}}"
sub:"123456"
user.tenant.name:"DefaultDomain"
__proto__:Object
现在,使用下面的代码获取角色
public getUserRoles(){
let userInfoJSON = JSON.parse(JSON.stringify(this.jwtHelper.decodeToken(sessionStorage.getItem('encodedToken'))));
for (let prop in userInfoJSON) {
if(prop === 'roles'){
let roles = JSON.parse(userInfoJSON[prop]);
for(let rProp in roles){
if(rProp === 'privileges'){
let privileges = JSON.parse(JSON.stringify(roles[rProp]));
for(let prev in privileges){
console.log("prev "+prev+" "+privileges[prev])
this.userRoles = privileges[prev];
}
}
}
break;
}
}
console.log("AuthServiceuserRoles "+this.userRoles);
}
JSON.parse
解析整个令牌,以及嵌套对象
您不需要for循环,只需使用let roles=userInfoJSON.roles
和let privileges=roles.privileges
等
以下是我用来查看用户是否具有特定角色的示例代码:
let token = localStorage.getItem(jwtTokenName);
if (token && tokenNotExpired(null, token)) {
let tokenDecoded = jwtHelper.decodeToken(token);
if (tokenDecoded.roles && tokenDecoded.roles.length > 0) {
for (let i = 0; i < tokenDecoded.roles.length; i++) {
const role = tokenDecoded.roles[i];
if (roles.indexOf(role) >= 0) {
return true;
}
}
}
}
let token=localStorage.getItem(jwtTokenName);
if(令牌和令牌notexpired(null,令牌)){
让tokenDecoded=jwtHelper.decodeToken(令牌);
if(tokenDecoded.roles&&tokenDecoded.roles.length>0){
for(设i=0;i=0){
返回true;
}
}
}
}