Я столкнулся с ошибкой в IntelliJ при попытке использовать decodedJwt.scope.
Сообщение об ошибке: Свойство «область действия» не существует для типа «JwtPayload». Единственные предложения, которые предоставляет IntelliJ: sub, aud, exp, iat, jti, iss и nbf.
loadProfile(data: any) {
this.isAuthenticated = true;
this.accessToken = data['access-token'];
let decodedJwt = jwtDecode(this.accessToken);
this.username = decodedJwt.sub;
this.roles = decodedJwt.scope;
window.localStorage.setItem("jwt-token", this.accessToken);
}
Раньше я много раз использовал decodedJwt.scope без каких-либо проблем, но теперь его внезапно не существует. Кто-нибудь сталкивался с этой проблемой раньше или знает, как ее решить?





В классе JWTPayload нет свойства scope.
На основе предложенного решения вы можете создать собственный класс (Auth0JwtPayload), содержащий свойство scope. Затем вам следует вызвать jwtDecode, указав тип (Auth0JwtPayload).
interface Auth0JwtPayload extends JWTPayload {
scope: string;
}
let decodedJwt: Auth0JwtPayload = jwtDecode<Auth0JwtPayload>(this.accessToken);
Я думаю, что последняя версия пакета jwt-decode не имеет свойстваscope. Я использовал версию jwt-decode@^3.1.2, и она работает.
<blink>
loadProfile(data: any) {
this.isAuthenticated=true;
this.accessToken = data['access-token'];
let decodedJwt: any = jwtDecode(this.accessToken);
this.username = decodedJwt.sub;
this.roles = decodedJwt.scope;
window.localStorage.setItem("jwt-token", this.accessToken);
}
</blink>