A progressive Node.js framework for building efficient and scalable server-side applications.
Description
JWT utilities module for Nest based on the jsonwebtoken package.
Installation
$ npm i --save nestjs-jwtredis
Usage
Import JwtModule
:
Inject JwtService
:
Secret / Encryption Key options
If you want to control secret and key management dynamically you can use the secretOrKeyProvider
function for that purpose.
JwtModule.register;
Async options
Quite often you might want to asynchronously pass your module options instead of passing them beforehand. In such case, use registerAsync()
method, that provides a couple of various ways to deal with async data.
1. Use factory
JwtModule.registerAsync;
Obviously, our factory behaves like every other one (might be async
and is able to inject dependencies through inject
).
JwtModule.registerAsync,
2. Use class
JwtModule.registerAsync;
Above construction will instantiate JwtConfigService
inside JwtModule
and will leverage it to create options object.
3. Use existing
JwtModule.registerAsync,
It works the same as useClass
with one critical difference - JwtModule
will lookup imported modules to reuse already created ConfigService
, instead of instantiating it on its own.
API Spec
The JwtService
uses jsonwebtoken underneath.
jwtService.sign(payload: string | Object | Buffer, options?: JwtSignOptions): string
The sign method is an implementation of jsonwebtoken .sign()
. Differing from jsonwebtoken it also allows an additional secret
property on options
to override the secret passed in from the module. It only overrides the secret
, publicKey
or privateKey
though not a secretOrKeyProvider
.
jwtService.signAsync(payload: string | Object | Buffer, options?: JwtSignOptions): Promise<string>
The asynchronous .sign()
method.
jwtService.verify<T extends object = any>(token: string, options?: JwtVerifyOptions): T
The verify method is an implementation of jsonwebtoken .verify()
. Differing from jsonwebtoken it also allows an additional secret
property on options
to override the secret passed in from the module. It only overrides the secret
, publicKey
or privateKey
though not a secretOrKeyProvider
.
jwtService.verifyAsync<T extends object = any>(token: string, options?: JwtVerifyOptions): Promise<T>
The asynchronous .verify()
method.
jwtService.decode(token: string, options: DecodeOptions): object | string
The decode method is an implementation of jsonwebtoken .decode()
.
The JwtModule
takes an options
object:
secret
is either a string, buffer, or object containing the secret for HMAC algorithmssecretOrKeyProvider
function with the following signature(requestType, tokenOrPayload, options?) => jwt.Secret
(allows generating either secrets or keys dynamically)signOptions
read moreprivateKey
PEM encoded private key for RSA and ECDSA with passphrase an object{ key, passphrase }
read morepublicKey
PEM encoded public key for RSA and ECDSAverifyOptions
read moresecretOrPrivateKey
(DEPRECATED!) read more
Support
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please read more here.
Stay in touch
- Author - Chantouch Sek
- Website - https://bookingkh.com
- Twitter - @Touch
License
Nest is MIT licensed.