@kingworldjs/jwt
TypeScript icon, indicating that this package has built-in type declarations

0.0.0-experimental.0 • Public • Published

@kingworldjs/static

Plugin for kingworld for using JWT Authentication.

Installation

bun add @kingworldjs/jwt

Example

import { KingWorld, t } from 'kingworld'
import { jwt } from '@kingworldjs/jwt'
import { cookie } from '@kingworldjs/cookie'

const app = new KingWorld()
    .use(
        jwt({
            name: 'jwt',
            // This should be Environment Variable
            secret: 'MY_SECRETS'
        })
    )
    .use(cookie)
    .get('/sign/:name', async ({ jwt, cookie, setCookie, params }) => {
        setCookie('auth', await jwt.sign(params))

        return `Sign in as ${params.name}`
    })
    .get('/profile', async ({ jwt, set, cookie: { auth } }) => {
        const profile = await jwt.verify(auth)

        if (!profile) {
            set.status = 401
            return 'Unauthorized'
        }

        return `Hello ${profile.name}`
    })
    .listen(8080)

Config

This package extends jose, most config is inherited from Jose.

Below are configurable properties for using JWT plugin

name

Name to decorate method as:

For example, jwt will decorate Context with Context.jwt

secret

JWT secret key

schema

Type strict validation for JWT payload

Jose's config

Below is the config inherits from jose

alg

@default 'HS256'

Algorithm to sign JWT with

crit

Critical Header Parameter.

iss

JWT Issuer

@see RFC7519#section-4.1.1

sub

JWT Subject

@see RFC7519#section-4.1.2

aud

JWT Audience

@see RFC7519#section-4.1.3

jti

JWT ID

@see RFC7519#section-4.1.7

nbf

JWT Not Before

@see RFC7519#section-4.1.5

exp

JWT Expiration Time

@see RFC7519#section-4.1.4

iat

JWT Issued At

@see RFC7519#section-4.1.6

Package Sidebar

Install

npm i @kingworldjs/jwt

Weekly Downloads

1

Version

0.0.0-experimental.0

License

MIT

Unpacked Size

28.5 kB

Total Files

11

Last publish

Collaborators

  • aomkirby123