JWT 管理员
JWT Manager是一个软件包,简化了应用程序中JWT(JSON Web Tokens)的处理. 它总结了以干净而直截了当的API获取、储存和刷新信使的过程.
安装
您可以使用 npm 为您的项目添加 JWT 管理器 :
npm install -client/jwt-manager
特征
- 方便地获取和刷新 JWT
getJwt财务报告和审定财务报表refreshToken方法。 。 . - 用自动刷新处理令牌过期 .
- 用户
JwtRepository用于符号存储和管理. - 工作与一个
JwtResolver来取回信物. - 允许额外信息与令牌同时存在 .
使用量
以下是在节点应用程序中使用JWT管理器的基本例子:
const { JwtManager, JwtRepository, JwtResolver } = require('@conduit-client/jwt-manager');
type EncodedJwtClaims = {
exp: number;
username: string;
}
type ExtraInfo = {
envBaseUri: string;
}
// Your JwtResolver implementation
const jwtResolver: JwtResolver<ExtraInfo> = {
getJwt(): Promise<{ jwt: string; extraInfo: ExtraInfo }> {
return fetch(); // resolves the jwt.
}
};
// Your JwtRepository implementation
const jwtRepository = new JwtRepository<EncodedJwtClaims, ExtraInfo>(
3, // notifies that the token will expire in 3 seconds
120, // if exp claim is not provided, the token will expire in 120 seconds.
);
// Create JwtManager instance
const jwtManager = new JwtManager(jwtRepository, jwtResolver);
// Get a JWT
jwtManager.getJwt().then((jwt) => {
console.log(jwt.token); // Prints the JWT
console.log(jwt.decodedInfo); // Prints the JWT decoded information
console.log(jwt.extraInfo); // Prints the JWT extra information
});
记住,你需要提供自己的 JwtResolver 执行情况 JwtResolver 接口。 这个 JwtResolver 应提供 getJwt 用于在需要时检索新的JWT(以及可选的额外信息)的方法.
API 参考
该套件输出出两个主要要素: JwtManager 班级, JwtRepository 类和 JwtResolver 财务报告和审定财务报表 JwtToken 类型.
Jwt 管理器
这个 JwtManager 类是JWT管理器包中的主要类.
它揭露了下列方法:
getJwt(): 返回一个JWT。 如果一个符号请求正在执行中, 它会返回此请求的承诺 。 如果当前符号未定义或已过期,则启动一个符号刷新. 否则,它会返回当前符号.refreshToken():刷新JWT. 如果正在更新请求, 它会返回此请求的承诺 。 否则,它开始一个新的更新请求并返回它的承诺.
JWT 仓库
这个 JwtRepository class是JWT(JSON Web Tokens)在JWT管理器包内的一个存储和管理解决方案.
课柄:
- 设置并获得当前JWT.
- JWT快到期时通知观察员.
- 移除JWT.
使用量
const { JwtRepository } = require('jwt-manager');
// Create JwtRepository instance with optional parameters
const jwtRepository = new JwtRepository(limitInSeconds, defaultTokenTTLInSeconds, logger);
// Set a JWT with optional extra information
jwtRepository.setToken('myJWT', { extra: 'info' });
// Get the current JWT
const currentToken = jwtRepository.token;
// Subscribe to the token nearing its expiration
const unsubscribe = jwtRepository.subscribeToTokenNearExpiration((token) => {
console.log(`Token is about to expire: ${token}`);
});
// To unsubscribe
unsubscribe();
// Remove the current JWT
jwtRepository.removeToken();
API 密码
JwtRepository 揭露下列方法:
-
constructor(limitInSeconds: number, defaultTokenTTLInSeconds: number, logger: Logger): 构造器使用可选参数来自定义其行为. 这个limitInSeconds确定该标志过期前通知观察者的时间。 这个defaultTokenTTLInSeconds如果“exp”索赔在符号中不存在,则设定默认的符号过期时间为秒.logger用于记录警告和错误. -
token: 返回当前 JWT . -
setToken(token: string, extraInfo?: ExtraInfo): 以可选的额外信息设置当前 JWT 。 返回设定符号的对象. -
removeToken(): 删除当前 JWT . -
subscribeToTokenNearExpiration(cb: (token: JwtToken<T, ExtraInfo>) => void): 订阅即将到期的代币. 它返回一个可用于取消订阅的函数.
Jwt 解析器
这个 JwtResolver 类型用于定义 JWT 解析器实例的结构。 它包含一个 getJwt 以 JWT 和可选的额外信息返回承诺的方法.
捐款
我们欢迎捐款! 请看我们的 贡献指南 更多细节.
许可证
见 LICENSE.txt (英语) 详细文件.