gpt4 book ai didi

typescript - 如何使用 typescript 获取 `jsonwebtoken` 的 token 过期

转载 作者:搜寻专家 更新时间:2023-10-30 21:22:42 25 4
gpt4 key购买 nike

我正在使用 jsonwebtoken 来解码 token ,并且我正在尝试获取到期日期。 Typescript 抛出关于 exp 属性的错误,我不太确定如何解决它们:

import jwt from 'jsonwebtoken'

const tokenBase64 = 'ey...' /* some valid token */

const token = jwt.decode(tokenBase64)
const tokenExpirationDate = token.exp
// ^^^
// Property 'exp' does not exist on type 'string | object'. Property 'exp' does not exist on type 'string'.

我已经安装了@types/jsonwebtoken,并寻找一个 token 类型来转换token,但没有找到。有什么建议吗?

使用

  • @types/jsonwebtoken@7.2.3
  • jsonwebtoken@8.1.0

.tsconfig:

{
"compilerOptions": {
"allowJs": true,
"baseUrl": ".",
"jsx": "Preserve",
"moduleResolution": "Node",
"module": "ESNext",
"sourceMap": true,
"removeComments": true,
"allowSyntheticDefaultImports": true,
"target": "ESNext"
}
}

最佳答案

这就是我使用 TS 解码的方式

import jwt from 'jsonwebtoken';

export const isTokenExpired = (token: string): boolean => {
try {
const { exp } = jwt.decode(token) as {
exp: number;
};
const expirationDatetimeInSeconds = exp * 1000;

return Date.now() >= expirationDatetimeInSeconds;
} catch {
return true;
}
};

不需要,但你也可以

import 'jest';
import jwt from 'jsonwebtoken';

import { isTokenExpired } from 'path-to-isTokenExpired/isTokenExpired';

describe('isTokenExpired', () => {
it('should return true if jwt token expired', () => {
const currentTimeInSecondsMinusThirtySeconds = Math.floor(Date.now() / 1000) - 30;
const expiredToken = jwt.sign({ foo: 'bar', exp: currentTimeInSecondsMinusThirtySeconds }, 'shhhhh');

expect(isTokenExpired(expiredToken)).toEqual(true);
});

it('should return false if jwt token not expired', () => {
const currentTimeInSecondsPlusThirtySeconds = Math.floor(Date.now() / 1000) + 30;
const notExpiredToken = jwt.sign({ foo: 'bar', exp: currentTimeInSecondsPlusThirtySeconds }, 'shhhhh');

expect(isTokenExpired(notExpiredToken)).toEqual(false);
});

it('should return true if jwt token invalid', () => {
expect(isTokenExpired('invalidtoken')).toEqual(true);
});
});

关于typescript - 如何使用 typescript 获取 `jsonwebtoken` 的 token 过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47508424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com