首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法用jwt解码jwt-解码

无法用jwt解码jwt-解码
EN

Stack Overflow用户
提问于 2018-02-13 15:23:23
回答 4查看 17.6K关注 0票数 7

我正在尝试用jwt-解码来解码我的令牌,但我做不到,它给了我以下错误。有人知道为什么吗?

错误错误: Uncaught (承诺):TypeError: jwt_decode_1.default不是函数TypeError: jwt_decode_1.default不是RoleGuardService.canActivate上的函数(角色保护服务?d7c4:19)

代码语言:javascript
复制
import jwt_decode from 'jwt-decode';

canActivate(route: ActivatedRouteSnapshot): boolean {
        // this will be passed from the route config
        // on the data property
        const expectedRole = route.data.expectedRole;
        const token = localStorage.getItem('token');
        // decode the token to get its payload
        const tokenPayload = jwt_decode(token);
        console.log(tokenPayload);
        if (
            !this.auth.isAuthenticated() ||
            tokenPayload.role !== expectedRole
        ) {
            this.router.navigate(['login']);
            return false;
        }
        return true;
    }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-02-13 15:26:33

我想你应该像这样进口:

代码语言:javascript
复制
import * as jwt_decode from 'jwt-decode';
票数 19
EN

Stack Overflow用户

发布于 2020-10-01 19:41:48

根据文档 +互联网搜索,正确的方法是:

1.安装包+类型

npm install --save jwt-decode

npm install --save @types/jwt-decode

  1. 当您导入jwt_decode时,您应该超越来自tslint的规则,您的代码将完全像下面这样(上面有注释行)

// @ts-忽略来自“jwt-decode”的导入jwt_decode;

否则你会得到这样一个错误

您也可以在tsconfig.json上添加该规则,但只有1次例外:)

票数 7
EN

Stack Overflow用户

发布于 2020-10-15 18:22:52

我也犯了同样的错误,但经过多次尝试,我还是用另一种方法解决了这个问题:

代码语言:javascript
复制
private decode(token: string) {
    try {
        return JSON.parse(atob(token.split(".")[1]));
    } catch (e) {
        console.log("error decoding token");
    }
}

函数atob() 参考文献

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48770106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档